考虑以下C程序。
// 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(请参见Wiki页面更多细节)。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- 如何找到给定图(graph)中的所有桥()
- 解决C语言宏编程难题
- win7系统联想y460无线网卡驱动最新推荐
- 系统之家正版win732位旗舰版最新推荐
- 安装iis 系统之家 ghost windows7图文详细教程图解
- 32位win7磊科nw336无线网卡驱动最新推荐
- windows7系统 loader激活工具最新推荐
- win7/win8系统sl410k无线网卡驱动最新推荐
- 本文教你雨林木风ghost 32位win7搜索在啥地方