首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量1=({语句1;报表2;})构造为C

变量1=({语句1;报表2;})构造为C
EN

Stack Overflow用户
提问于 2014-09-02 04:46:16
回答 1查看 189关注 0票数 6
代码语言:javascript
复制
main()

{

       int a=10,b=30,c=0;

       if( c =({a+b;b-a;})) 
       {
          printf("%d",c);
       }

}

为什么构造({;})在C中是合法的,以及为什么它返回最后一个语句值作为表达式的结果(为什么它的工作方式类似于逗号运算符)?

EN

回答 1

Stack Overflow用户

发布于 2014-09-02 05:54:49

代码语言:javascript
复制
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实际上被视为

代码语言:javascript
复制
   {
    c=a+b;
    c=b-a;
   }

由于a+b,最初的c值为40。同样,c是由b-a修改的。要证明这一点,请考虑以下三种情况。

(1)。

代码语言:javascript
复制
 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)

代码语言:javascript
复制
   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() {

代码语言:javascript
复制
    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结合的()从左到右。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25616030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档