考虑下面的C程序。
null
// PROGRAM 1 #include<stdio.h> int main( void ) { int a = 1, 2, 3; printf ( "%d" , a); return 0; } |
上面的程序编译失败,但下面的程序编译得很好,并打印1。
// PROGRAM 2 #include<stdio.h> int main( void ) { int a; a = 1, 2, 3; printf ( "%d" , a); return 0; } |
下面的程序打印3,为什么?
// PROGRAM 3 #include<stdio.h> int main( void ) { int a; a = (1, 2, 3); printf ( "%d" , a); return 0; } |
在C/C++程序中,逗号用于两种上下文:(1)分隔符(2)运算符。(见 这 更多细节)。
逗号在程序1中用作分隔符,我们在该程序中遇到编译错误。
逗号在程序2中用作运算符。 逗号运算符的优先级在运算符优先级表中最小 。因此赋值运算符优先于逗号,表达式“a=1,2,3”将等价于(a=1,2,3)。这就是为什么我们在第二个程序中得到1的输出。
在程序3中,使用括号,因此首先执行逗号运算符,我们得到的输出为3(参见 维基页面 更多细节)。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END