偶然一个C++群的人问:我的问题是(-1)/sizeof(int)和(-1)/4 ,有什么区别?
当时认为肯定结果都是0,运行才知道答案。。。
群里的人一同乱猜。。。看到运行答案,想了下之后才发现-1会被提升为unsigned类型这时就是0xFFFFFFFF/4了。。。而第二个表达式都是有符号的int型,结果当然为0。
找到一篇文章,http://blog.chinaunix.net/u2/70445/showart_1841233.html
本文通过两个具体的C++表达式示例,解释了有符号数和无符号数在除法运算中的不同表现。其中一个表达式中-1被提升为unsigned类型,导致结果不同。
偶然一个C++群的人问:我的问题是(-1)/sizeof(int)和(-1)/4 ,有什么区别?
当时认为肯定结果都是0,运行才知道答案。。。
群里的人一同乱猜。。。看到运行答案,想了下之后才发现-1会被提升为unsigned类型这时就是0xFFFFFFFF/4了。。。而第二个表达式都是有符号的int型,结果当然为0。
找到一篇文章,http://blog.chinaunix.net/u2/70445/showart_1841233.html

被折叠的 条评论
为什么被折叠?