main()
{
int a=10,b=30,c=0;
if( c =({a+b;b-a;}))
{
printf("%d",c);
}
}为什么构造({;})在C中是合法的,以及为什么它返回最后一个语句值作为表达式的结果(为什么它的工作方式类似于逗号运算符)?
发布于 2014-09-02 05:54:49
main()
{
int a=10,b=30,c=0;
if( c =({a+b;b-a;}))
{
printf("%d",c);
}
}在这里,{a+b;b-a;}是您编写的一个scope.In,2 statements.This实际上被视为
{
c=a+b;
c=b-a;
}由于a+b,最初的c值为40。同样,c是由b-a修改的。要证明这一点,请考虑以下三种情况。
(1)。
if(c=({(a=a+b);;}))
{
printf("%d\n",c);
printf("%d\n",a);
}在这里,o/p是c=40,在范围结束处的a=40;Because (即)在最后一条语句中是dummy (;)。因此,c=a+b是o/p. (2)
if(c=({(a=a+b);b-a;}))
{
printf("%d\n",c);
printf("%d\n",a);
}这里o/p是c=-10,a=40。因为最后一条语句是b-a。此值分配给c (3) main() {
int a=10,b=30,c=0;
if(c=({(a=a+b);0;}))
{
printf("%d\n",c);
printf("%d\n",a);
}
printf("%d\n",c);
}这里o/p是c=0 only.If不执行,因为最后一条语句是0;
C遵循过程,oriented.And结合的()从左到右。
https://stackoverflow.com/questions/25616030
复制相似问题