我按照你的程序敲了,编译没通过。我是觉得你这个程序有问题,根本就没有那种运算符。
a>?=b 等价于:a=a>b?a:b;
对于上式:a>?b+=c依据优先级:先计算b+=c,也就是b=b+c=8;
之后因为a>?=b等价于a=a>b?a:b,则先计算a>b=0,表达式值为a=8;
也就是结果所呈现的:a=8,b=8,c=3;
另外说明一点:上式不可以如此改写:a=a>b?a:b+=c,因为题目表达式中并没有出现?:表达,若如此改写就改变了计算的优先级,改写后的式子应该先计算三目运算符,再计算赋值符,最后计算+=符。这样b的值就不会被改变。结果就不对。因此:对于a>?=b运算符我们可以理解为:a=a>b?a:b,但是不是完全的等价。
请点赞,谢谢!
这个编译器可能有些默认的数值
会不会是
cout << (a>'' ? =b +=c : '') << '\n'
就是a是不是大于‘’空格字符的,如果大于,则等于b,此时的b已经等于8,否则a等于空格,你可尝试写成cout << (a =b +=c ) << '\n',这是应该就能看到编译器的默认值到底是什么
你的代码有问题吧!这应该是C++中的三目运算符!你去这里看看!http://baike.baidu.com/view/1897705.htm
涨姿势了,但是可以肯定的在标准语法中,没有>?=这种运算符。同时发现必须连写,增加空格就会出错(比如写成“> ?=”、“>? =”之类),而且确实DEV C++会编过,感觉和编译器的实现有关系,但可以肯定的是这不符合C++标准规范,写这种东西只能用在参加什么国际C语言混乱代码大赛上了。写别人看不懂,编译器又不通用的东西,没什么实际价值。