C语言问题

[复制链接]
查看11 | 回复1 | 2009-8-10 20:56:17 | 显示全部楼层 |阅读模式
b=a900? x:y; // b=( a 900) ? x:ya左移shift位后 若大于900将x赋值给b 否则y赋值给b
回复

使用道具 举报

千问 | 2009-8-10 20:56:17 | 显示全部楼层
...那句比较奇怪。。。按照我的理解。。。 a ?b :c ,?:是个三目运算符。?:; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值.如a=b>c?d:e;在这里 如果 b>c,a值为d。即是 if (b>c) a=d;
bvoid main (void){ int x=6; int y,z; short int shift=4; long a=100; int b; printf("1:x=%d\n",x); y=++x; printf("2:x=%d,y=%d\n",x,y); y=x--; printf("3:x=%d,y=%d\n",x,y); //printf("%d\n",a900? x:y;//在这里a的值为100,shift的值为4,x的值为6,a左移4位相当于100*2^4=1600,1600>900,所以b=6;而a在左移4位后值并没有赋给a,所以还是原来的100 printf("4:a=%d,b=%d\n",a,b); a+=b,b++; printf("5:a=%d,b=%d",a,b); z=a>b; printf("6:z=%d\n",z);}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行