C语⾔中关于逗号运算符的理解
c语言中逗号运算符怎么运算在C语⾔中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三⽬运算符、sizeof运算符、逗号运算符等等,那今天我们就重点来给⼤家讨论⼀下关于逗号运算符的⼀些运算规则。
⾸先逗号运算符是⾮常简单的,对于初学者来说,只要在相应的IDE环境中进⾏测试便可以得到想要的结果;但是对于逗号运算符存在很多变种的题⽬,在⼀些笔试⾯试题中经常会见到,但是在真正的实际开发⽤的却不是很多,既然有⽹友问道这样的题⽬,那今天我就简单的给⼤家解释⼀下,什么是逗号运算符?
逗号运算符是指在C语⾔中,多个表达式可以⽤逗号分开,其中⽤逗号分开的表达式的值分别结算,但整个表达式的值是最后⼀个表达式的值。
举个例⼦:
int a1,a2,b=2,c=7,d=5; // 第1⾏
a1=(++b,c--,d+3); // 第2⾏
a2=++b,c--,d+3; //第3⾏
对于给a1赋值的代码,有三个表达式,⽤逗号分开,所以最终的值应该是最后⼀个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。
对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符⽐逗号运算符优先级⾼)虽然最终表达式的值虽然也为8,但b=4(第2⾏代码运算完时,b=3,即第3⾏代码运⾏时,b的值为4),所以a2=4
再来⼀个关于结合性的例⼦:
int i=24;
int n = (i++,i++,i++,i++); // n == 27
因为逗号运算符的结合性是⾃左向右,所以四个i++会依次运⾏,但是最后⼀个i++在赋值之后才进⾏运算,所以最终返回27。