社区
C语言
帖子详情
int a = 1, b =2, c = 3, d = 4; 表达式:a++ < b ? a : c < d ? --a : --d 的值
逗逗喵吧
2012-05-15 05:00:31
int a = 1, b =2, c = 3, d = 4;
表达式:a++ < b ? a : c < d ? --a : --d 的值为2,
但是我不知道它是怎么转变来的,它数据变化的流程是什么?
...全文
855
14
打赏
收藏
int a = 1, b =2, c = 3, d = 4; 表达式:a++ < b ? a : c < d ? --a : --d 的值
int a = 1, b =2, c = 3, d = 4; 表达式:a++ < b ? a : c < d ? --a : --d 的值为2, 但是我不知道它是怎么转变来的,它数据变化的流程是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
玲仙
2012-05-16
打赏
举报
回复
看了就不曉得是做啥用的...
wizard_tiger
2012-05-16
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
先计算 a++ < b 由于这时a=1,b=2; 执行a,而不执行c < d ? --a : --d,这时a=2;所以表达式 a++ < b ? a : c < d ? --a : --d的值为2;
[/Quote]
++
不过建议楼主尽量不要写这样的程序,这种程序的结果有时是跟据编译器而定的,不同的编译器会有不同的结果。
regainworld
2012-05-16
打赏
举报
回复
没有意义,程序写得越清晰越好
22too
2012-05-16
打赏
举报
回复
就知道是条件运算符!具体不懂了
youkuxiaobin
2012-05-15
打赏
举报
回复
表示对这种问题很有压力,不会啊
CMDZX
2012-05-15
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
先计算 a++ < b 由于这时a=1,b=2; 执行a,而不执行c < d ? --a : --d,这时a=2;所以表达式 a++ < b ? a : c < d ? --a : --d的值为2;
[/Quote]
条件运算符不是右结合性的吗?
飞天御剑流
2012-05-15
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
你还是蛋疼去吧,取决于编译器的解释顺序
[/Quote]
条件运算符是例外,它的子表达式的计算顺序和顺序点都是确定的。
小白晒太阳
2012-05-15
打赏
举报
回复
++[Quote=引用 6 楼 的回复:]
先计算 a++ < b 由于这时a=1,b=2; 执行a,而不执行c < d ? --a : --d,这时a=2;所以表达式 a++ < b ? a : c < d ? --a : --d的值为2;
[/Quote]
mzliming
2012-05-15
打赏
举报
回复
先计算 a++ < b 由于这时a=1,b=2; 执行a,而不执行c < d ? --a : --d,这时a=2;所以表达式 a++ < b ? a : c < d ? --a : --d的值为2;
笨笨周0915
2012-05-15
打赏
举报
回复
无聊的程序。。。。真正开发的时候 很少用到的。。。风格极差。。不提倡了。。
猪头小哥
2012-05-15
打赏
举报
回复
为什么不是从右边开始运算?
酱油党
2012-05-15
打赏
举报
回复
你还是蛋疼去吧,取决于编译器的解释顺序
W170532934
2012-05-15
打赏
举报
回复
先运算:a++<b :由于a=1,b=2,所以这个逻辑运算是true,选择第一个运算表达式:a。而这时候a=2
飞天御剑流
2012-05-15
打赏
举报
回复
a<b为真,然后a后加1,结果就是2了。
华为C&C
++
笔试题(附答案)
1.写出判断ABCD四个
表达式
的是否正确, 若正确, 写出经过
表达式
中 a的
值
(3分)
int
a = 4; (A)a += (a
++
); (B) a += (
++
a) ;(C) (a
++
) += a;(D) (
++
a) += (a
++
); a = ? 答:C错误,左侧不是一个有效变量,不能赋
值
,可改为(
++
a) += a; 改后答案依次为9,10,10,11 。。。。。。。。。。。。。。 。。。。。。。。。。。。
华为C
++
笔试题(附答案)
华为C
++
笔试题(附答案) 1.写出判断ABCD四个
表达式
的是否正确, 若正确, 写出经过
表达式
中 a的
值
(3分)
int
a = 4; (A)a += (a
++
); (B) a += (
++
a) ;(C) (a
++
) += a;(D) (
++
a) += (a
++
); a = ? 答:C错误,左侧不是一个有效变量,不能赋
值
,可改为(
++
a) += a; 改后答案依次为9,10,10,11
若
int
a = 0, b = 1, c = 2,则逻辑
表达式
a
++
&& b
++
|| (c -= 2)执行之后
若
int
a = 0, b = 1, c = 2,则逻辑
表达式
a
++
&& b
++
|| (c -= 2)执行之后 a=1 ,b=1,c=0,
表达式
的
值
为0 分析如下: 逻辑
表达式
a
++
&& b
++
|| (c -= 2)执行时 1、由于优先级&&与||一样,所以执行是先执行&& a
++
&& b
++
其中都是X
++
形...
java程序
int
b=c>>3_如下程序的结果 (要求(java)画图来解释)
int
a = 3, b; b = (a
++
)+(
++
a)+(a
++
)*2+a+(
++
a);...
如下程序的结果 (要求(java)画图来解释)
int
a = 3, b; b = (a
++
)+(
++
a)+(a
++
)*2+a+(
++
a);以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如下程序的结果 (要求(java)画图来解释)
int
a = 3, b; b = (a
++
)+(
++
a)+(a
++
)*2+a+(
++
...
c语言基本运算符问题 *a
++
= *b
++
*a
++
是先执行
++
运算,再执行 *, 即指针先移动一个位置,在对移动后指针所指位置解引用取
值
。 前置运算: 举例:
++
a=
++
b; 执行顺序是: a=a+1; b=b+1; a=b;后置运算: 举例:a
++
=b
++
; a=b; a=a+1; b=b+1; 再回到上面的问题:*a
++
=*b
++
; 执行顺序是: *a; *b; *a=*b; a
++
; b
++
; …… while (n-- && (*target2
++
= *target1
++
) != '\0')
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章