大佬们,请教下一个问题
c#吧
全部回复
仅看楼主
level 1
happy你跑 楼主
请问下为什么程序运行出来的结果会是62和60,问了下几个AI得出的结果都不一样,有点不懂
2025年04月20日 07点04分 1
level 7
正常写代码不会这么写,不要去研究了,浪费时间。。。。
2025年04月20日 09点04分 2
正解,,,除非你是去考微机原理。。。
2025年05月01日 03点05分
level 12
从实际的角度出发你可以不用太纠结,因为工作中你这么写代码估计要被打死。
但是你想要知道其实也不难:首先在做运算之前,你先把变量替换成实际的值,然后从右到左的顺序,按照操作符的优先级把值算出来。
int x = 24;
x += x--; 这里你也写了,其实后置的--是先用值,再计算减法,那其实就是 x += 24-- → 24 + 24 = 48;
x += x %=17; 这里同样的 x += 48 %= 17 ,x%=17 就是x模17, 就是14,那其实就是 x += 14 = 62;
下面的y同理,只不过因为第一步运算是--y,那其实就是
y += 23 (--24) = 47;
47 += (47 % 17) → 47 += 13 → 60;
包括假设有更多层次也是一个逻辑,比如x还是24
x += x -= x %= 5;
其实就是 24 += 24 - ( 24 % 5 ) = 44;
2025年04月20日 10点04分 3
这里只是最简单的情况,就是每个表达式里,只取了一次变量,但是如果你要去多次的话,那这个可能看汇编才能理解他的逻辑。
2025年04月20日 11点04分
level 6
你看的哪个视频教你这么写的,把那个up主拉黑。
2025年04月20日 11点04分 4
level 6
纯粹自己给自己找事情
2025年04月20日 18点04分 5
level 6
楼上浙江网友说得对
2025年04月21日 05点04分 6
level 13
语法糖而已,未太大必要去研究
2025年04月21日 07点04分 7
level 6
谁教你这么写的[阴险][阴险]纯纯的折磨人
2025年04月22日 01点04分 8
level 12
其实是依赖编译器的解析规则,没必要深究,真实项目中写代码也不要这么“浓缩”。
2025年04月29日 02点04分 9
level 10
这个题目的本质是考运算符的优先执行顺序,记住下面这个运算顺序再分析就行。
备注:有些人肯定会质疑 ++x 比 x++ 优先;这两种运算符优先等级是一样的,只是++x是先加后用、x++是先用后加;给个示例:
1 + 1 * 2 先算 1 * 2,所以 * 比 + 号优先;
var a = 1;
var b = 2;
var a2 = a++ * ++b + ++a ;
这里应该是 var a2= 1 * 3 + 3 ,并不会因为++b 、++a 在后面而先计算++b + ++a
2025年04月29日 03点04分 10
实际写代码中,要尽量避免重复使用 x++ + --x 这种代码,不好理解,对团队来说是灾难,维护时容易改出Bug。
2025年04月29日 03点04分
level 9
除了考试没必要理会这种徒增烦恼的代码[呵呵]
2025年04月30日 01点04分 11
1