【试题052】C语言逗号表达式例题合集

1.题目:设int a,b;,表达式a=2,b=5,b++,a+b的值是 ?

  • [ ] 分析:逗号表达式的结果是最右边(末尾)表达式的值
  int a, b;
  printf("%d\n", (a =2,b = 5,b++,a + b));//8
  printf("a=%d,b=%d\n", a,b);
  //a=2,b=6
  //分析:a =2赋值成功,b = 5赋值成功
  //接着进行计算:b++=5,执行完该语句b=6
  //a+b=2+6=8

2.题目:设int a=1,b=2;,则执行a=b+2,a++,a+b;后a和b的值分别是 ?

  • [ ] 分析:逗号运算符结合性:左结合,结果为末尾值
  int a = 1, b = 2;
  printf("%d\n", (a = b + 2, a++, a + b));
  printf("a=%d,b=%d\n", a, b);
  //分析:a=b+2=2+2=4,此时a赋值为4
  //a++=4, 执行完该语句a=5
  //a + b=5+2=7
  //表达式值=7,a=5,b=2

3.题目:设int a=3,b=4;,则printf("%d,%d\n",(a,b),(b,a));的输出结果是 ?

  • [ ] 分析:多个表达式取末尾表达式最末尾的数据值
  int a = 3, b = 4;
  printf("%d,%d\n", (a, b), (b, a));// 4,3
  //分析:两个括号取末尾的值
  //(a, b)=(3,4)取4为结果
  //所以(b, a)=(4,3)取3为结果

4.题目:表达式 (d=35,*d * 4 ,d+5)最后的值为?

  • [ ] 分析:d=3*5=15,此时d赋值为15
  • [ ] d4=154=60并未赋值
  • [ ] d+5=15+5=20

5.题目:

int x=1,y=2;

x=x+y; y=x-y; x=x-y;

则执行后x和y的值分别为?

  • [ ] 分析:x=x+y→x=1+2=3此时x=3
  • [ ] y=x-y→y=3-2=1 此时y=1
  • [ ] x=x-y→x=3-1=2 此时x=2

6.题目:设int a,b;,表达式(a=2,b=5,--a+b)的值是?

  • [ ] 分析:a=2,此时a赋值为2
  • [ ] b=5,此时b赋值为5
  • [ ] --a+b→1+5=6

7.题目:设int a=2,b=6,c=8;,表达式(a,b),(c,10)的值是?

  int a = 2, b = 6, c = 8;
  printf("%d\n", ((a, b), (c, 10)));//10
  //括号将两个表达式括起来,看成一个大式子。
  //所以只输出一个值,结果为最末尾的10
  printf("%d,%d\n", (a, b), (c, 10));//6,10
  //输出两个值需要去掉一层括号
  //(a, b)=(2,6)该表达式输出6
  //(c, 10)=(8,10)该表达式输出10

8.题目:设int a;,则表达式printf("%d,%d\n", (a=(2,3),a+1);的值是 ?

  • [ ] 分析:a=(2,3)→a=3此时a赋值为3
  • [ ] a+1→3+1=4表达式结果为4

9.题目:逗号表达式a=26,a**3,a+5的值是 ?

  • 分析:a=2*6=12此时a赋值为12
  • a**3=123=36 此时未赋值a还是12
  • a+5=12+5=17

10.题目:设int a;执行表达式(a=1,2,3),a+1后a和表达式的值分别是 ?

  • printf("%d\n", (a = 1, 2, 3), a + 1);若代码这样写,只能输出一个值输出的是前面表达式的值3
  • printf("%d,%d\n", (a = 1, 2, 3), a + 1);加一个占位符,输出结果为3,2

  int a;
  printf("%d\n", ((a = 1, 2, 3), a + 1));
  printf("a=%d\n", a);//a=1
  //分析:(a = 1, 2, 3)此时a赋值为1,这个小表达式的结果为3
  // a + 1=1+1=2,未赋值a的值还是1
  //最终表达式结果为2

11.题目:设int a=12;,语句printf("%d\n",(a/3,a%3,a/10>0));

的输出结果是?

  int a = 12;
  printf("%d\n", (a / 3, a % 3, a / 10 > 0));
  //分析:a/3=4未赋值
  //a % 3=0未赋值
  //a / 10 > 0  ,12>10为真,输出结果1

13.题目:设int x,y,t;执行语句t=10+(x=3,y=5,x-y);后t的值是?

  • 分析:先看括号里的内容:x=3,y=5赋值成功
  • x-y=3-5=-2
  • t=10+(-2)=8

14.题目:

设int n=5;

执行语句printf("%d\n",(n=34,n5,n+1));后输出结果是 ?

  • 分析:n=3*4=12,此时n赋值为12
  • n*5=12+5=17 未赋值
  • n+1=12+1=13表达式结果为13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值