永发信息网

C语言中的逗号运算符使用

答案:3  悬赏:20  手机版
解决时间 2021-03-09 10:57
  • 提问者网友:川水往事
  • 2021-03-08 18:15
问题一 char temp[] = {"Hello"}; 和char temp[] = "Hello";
加不加花括号有不一样的地方吗?
问题二 char temp = 'a' , 'b' ;
这样编译器提示错误 但先做定义char temp; 然后temp = 'a','b';就没错了 这是为什么?
数组不能这样赋值可以理解 但是单个字符为什么会出错?
问题三 char temp; temp = 'a','b';
虽然不提示错误 但是输出的是temp值是a 这是为什么? 不应该是b吗?
问题四 char temp[] = {"Hello", "World"};
这个我想作为一个逗号运算符 即赋world给temp 同样会提示出错 这是为什么?是因为在初始化中不能给数组赋全体值吗?
求教
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-03-08 18:37
问题一 char temp[] = {"Hello"}; 和char temp[] = "Hello";
这两个字符数组是一样的。

问题二
char temp = 'a' , 'b' ;  //编译错误

char temp; temp = 'a','b'; //正确,temp得到'a'。'b'未起作用。
char temp; temp = ('a', 'b'); //正确,temp得到'b',这才是真正的逗号表达式

又如:
int a = 1, b = 2, c = 3;
c = a++, b++; //b++未执行
printf("%d %d %d\n", a, b, c); //输出“2 3 1”

问题三 char temp; temp = 'a','b';
同上。

问题四 char temp[] = {"Hello", "World"}; //编译错误
temp是一个字符数组,也可以表示存储一个字符串,但{"Hello", "World"}这个数组中的每个元素都是一个字符串,说明它已经是一个二维数组了,不能使用一维数组temp接收,除非这样:
char *temp[] = {"Hello", "World"};
全部回答
  • 1楼网友:玩家
  • 2021-03-08 21:08
掌握了以下4点,逗号表达式的运用就不是问题了: 1、逗号表达式格式:表达式1,(表达式2,表达式3,... 表达式n) 2、逗号表达式的计算过程为:从左往右逐个计算。 3、逗号表达式是作为一个整体的,它的最终结果就是最后一个表达式(即表达式n)的值。 4、逗号运算符的优先级别是所有运算符中最低的。
  • 2楼网友:有你哪都是故乡
  • 2021-03-08 19:31
c 语言中,逗号(,)也可以是运算符,称为逗号运算符(comma operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为: 子表达式1, 子表达式2, ..., 子表达式n 例如: a + b, c = b, c++ 逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。 逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯