Code Bye

发现C++一个令人费解的事情

#define     MAX(x, y) (((x) > (y)) ? (x) : (y))
size_t X = 5;
printf(“%d \n”, MAX((X-6), 0));
输出的是-1。而正常的例如 MAX(-1, 0)输出是0.
这个size_t是unsight int,但是为什么会输出-1!
解决方案

5

%d出卖了你

10

无符号的整数字, 怎么会出现-1..

5

size_t X=5;
X-6 的结果类型是什么,值是啥?

5

unsight int x=5-6;
无符号运算,-1是个超大的值

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明发现C++一个令人费解的事情