c语言中为什么'a=0'不是字符常量?为什么a+1=a是错的?a+=a+1表示什么?

如题所述

    一个字符常量只能含有一个字符,而'a=0'由三个字符构成,因而它不是字符常量。不过实际上,'a=0'是一个多字符字符常量(multi-character character constant),它属于unspecified behavior,因此通常不作讨论,认为它是错的就可以了。

    赋值号的左边必须是一个左值,a+1是一个右值,因而不能放在赋值号的左边。

    a+=a+1相当于a=a+(a+1),计算2a+1的值,并赋值给a。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-26
1.你这个不是单字符,是三个字符,严格说你这个是一个字符串,你这个是一个值,左边没有常量名
2.赋值号的左边不能是表达式,只能是变量,这个不管是什么语言都是这样规定的
3.a+=a+1,应该是先a=a+a,然后a=a+1
第2个回答  2019-03-26
'a' ,看到了吗?这个是字符常量,你那个是字符串常量;c中字符常量是单引号括起来的一个字符追问

哦哦,那后面俩个问题呢?

哦哦,那后面俩个问题呢?

c语言中为什么'a=0'不是字符常量?为什么a+1=a是错的?a+=a+1表示...
一个字符常量只能含有一个字符,而'a=0'由三个字符构成,因而它不是字符常量。不过实际上,'a=0'是一个多字符字符常量(multi-character character constant),它属于unspecified behavior,因此通常不作讨论,认为它是错的就可以了。赋值号的左边必须是一个左值,a+1是一个右值,因而不能放在赋值号的...

C语言的题目~~~
strcpy(a,a+1);错误,因为a是字符串常量的指针。不能将a+1 strcpy给常量

C语言 字符常量问题
答案选B A选项为字符串常量:字符串常量是由一对双引号括起的字符序列。B选项为字符常量:字符常量是用单引号括起来的一个字符。例如:'a'、'b'、'='、'+'、'?'都是合法字符常量。C还允许一种特殊形式的字符常量,就是以一个‘\\’开头的字符序列。在C语言中,字符常量有以下特点:字符常量只...

"A"为什么不是合法的C语言字符常量
应该是 'A' 这样才算是 字符常量 “A” 属于字符串常量 <单引号表示字符,双引号表示字符串,字符串会在结尾默认添加一个 结束标识符> nVn小抖 回答 希望对您有帮助!

c语言问题???
c=a+b+d;d=d-a+c-b;'Vtablea,2,0b,2,0c,2,0d,2,100of Vtable'Vupdate1,0;2,03,04,1001,802,1803,3604,200of Vupdateof Practice[Practice] \/\/2int a=5;int b=9;long int c;long d;c=a+b-7;d=a*b*c;c=d*d*d;a=c-d;'Vtablea,2,5b,2,9c,4,0d,4,0of Vtable...

c语言中a+和a-是什么意思?
1. 本质区别 在C语言中,字符串操作通常用双引号(")包含,如str = "a",这里的"a"是一个字符串,表示文本中的字符;而单引号(')用于表示字符常量,如str = 'a',这里的'a'实际上是一个字符变量,它代表字符集中的一个特定位置,比如ASCII码中的65,对应大写字母A。2. 底层原理 用单...

c语言,合法常量问题
A 数字有逗号 不合法 B 单引号里面反斜线加数字 表示的是八进制的 合法 C 整数 合法 D 首先看到是字符串。里面的是反斜线加X加两个东西,表示的是16进制的东西 合法 谢谢采纳

C语言指针问题
s=10*s+p[i][j]-'0'; \/\/就是ch的第i行第j列减去'0',这样要注意,这是个字符,ASCii是0x30,'6' - '0' = 0x36-0x30 = 0x06 \/\/所以答案是6385 3.数组变量实际上就是地址 str是这个数组的首地址,相当于&str[0]str+1就是&str[1],strcat(p1,p2) 返回就是把p2接在p1后就...

C语言中,如何表示“真”还是“假”?系统如何判断一个量的“真”和“假...
C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”。 比如:a、b的值分别是0、4,则a||b的值为1,a&&b的值为0。但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。比如:a=4,因为a的值为非0,被认作“真”,所以对它进行“非”运算!a=0 。其实...

想请教下关于C语言中的字符常量问题
'\\'是转义字符,意思就是'\\'后的字面不是原来的意思,最常见的就是'\\n'表示换行,明白了这个,下面就好讲解了 \\x表示的是十六进制,例如\\xa表示的是10,\\xf,表示的是15,\\xff表示的是255(15*16+15)\\o表示的是八进制,所以\\028表示2*8+8=24 所以c是对的 至于B为什么不合法,因为么有\\f...

相似回答