--a先执行a-1后执行程序
a-- 先执行程序后執行a-1
你对这个回答的评价是
不属于UB赋值运算是从右往左的,因此执行b=4返回b(值为4)再执行b=3返回b(值为3),再执行a=ba和b的值都是3。
这种代码是真实世界里基本不会出现的代码其意义只在于让你叻解2个知识点:
a = b = 1
这种表达式合法);
a = b = 4 = 3
就无法通过编译,因为先执行4 = 3
4是右值)。
PS:如果是C代码用gcc编译会报错:
但用g++编译不会报错。
因为c语言!a中赋值运算返回的是右值简单理解就是无法出现在赋值符号左边,而C++中赋值运算返回的是左值
原因是 + 两边的运算数求值是无序(可以互相穿插)的而同一标量类型对象上多于一次的无序修改,或无序的读取和修改是未定义行为
--a先执行a-1后执行程序
a-- 先执行程序后執行a-1
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案