注册 登录
编程论坛 C语言论坛

为什么输代码“int i = j = 8;"会报错

曹I环卫工 发布于 2021-07-03 14:52, 2665 次点击
刚学C语言没几天
模仿教学视频上的老师敲代码时产生了问题

为什么输代码“int i = j = 8;"会报错(其它地方是正确的,按视频上正确的写的。只有这个地方我修改了)

自己想了个答案不知道对不对

我想是因为:“=”的意思是将=右边的赋给=左边的
 而符号如:i、j ...是变量的意思,是一段存储空间。将一段存储空间赋给另一段存储空间当然是错的。

请教各路大神

另外发帖的时候怎么附加图片

请各位大神赐下答案
11 回复
#2
吹水佬2021-07-03 16:04
“int i = j = 8;"
写法有错,一是双引号,二是分号
#3
曹I环卫工2021-07-03 17:06
回复 2楼 吹水佬
谢谢回复
那两个是引号表示的是注明我写的代码的内容
应该是我两个引号打得不一样让你误解了
#4
曹I环卫工2021-07-03 17:11
回复 2楼 吹水佬
另外分号应该是没错的吧。{}之间一行代码输完,在这一行末尾打一个分号
#5
不会游泳的虾2021-07-03 18:27
应该是 i j  都是未定义的变量,这句里是同时定义了两个变量且赋初值,所以报错。改成这样,就可以了:int i=8,j=8; .

[此贴子已经被作者于2021-7-3 18:29编辑过]

#6
曹I环卫工2021-07-03 20:02
回复 5楼 不会游泳的虾
谢谢你愿意回复我。
可能有些钻牛角尖,但是为什么不能同时定义两个变量并赋值(还是说不能同时定义两个变量或是不能同时给两个变量赋值)呢?
是什么原理,原因呢?
#7
不会游泳的虾2021-07-04 11:06
回复 6楼 曹I环卫工
同时定义两个类型相同的变量,应该这么写:int  i,j;  两个变量间加 ‘,’分隔,最后是以分号 ‘;'结束,这是c语言的语法规定的。
如果同时定义两个变量,且同时赋初值,也是需要分开写的: int i=8,j=10; 。
如果之前已经定义了一个变量 i,且已给 i 赋值了,比如 i=5; ,现在我们定义一个新的变量 j ,且想让 j 和 i 的值相同,那么可以这样写:int j = i; 。
#8
曹I环卫工2021-07-04 11:24
回复 7楼 不会游泳的虾
谢谢,怎么写我是知道的。我只是奇怪为什么不能这样写。
谢谢你愿意回答我
#9
不会游泳的虾2021-07-04 11:43
回复 8楼 曹I环卫工
为什么不能这么写,因为这是乌龟的屁股 -- 规定,不然每个人自己发挥,编译器还认得过来。
#10
曹I环卫工2021-07-04 12:17
回复 9楼 不会游泳的虾
知道了,谢谢
但是我觉得哪怕是规定,背后还是有更深层的原因。
所以我自己想了一个原因(写在贴子中了)。
还是感谢你们的回答

[此贴子已经被作者于2021-7-4 12:22编辑过]

#11
one7372021-07-04 20:00
最主要的原因是j未定义(恐怕编译器也是这么报错的)
int i = j = 8可以,只要前面有int j;
#12
renkejun19422021-07-04 21:57
报错的 原因是j是未声明的变量呀。

C的变量是要先声明,后调用的。

至于为什么?去问语言的创造者。
1