网站做全景,阿里云网站建设模板,wordpress js代码插件,做网站页面的视频如果要自己实现一个获取绝对值的函数#xff0c;应该都没有问题#xff0c;我这边也自己写了一个#xff1a; void myabs(int i){if(i0){printf(%d\n,i);}else{printf(%d\n,-i);}
} 但是#xff0c;这个函数真的没有问题吗#xff1f;如果i的…如果要自己实现一个获取绝对值的函数应该都没有问题我这边也自己写了一个 void myabs(int i){if(i0){printf(%d\n,i);}else{printf(%d\n,-i);}
} 但是这个函数真的没有问题吗如果i的值为-2147483648会怎样我们来试下 #include stdio.hvoid myabs(int i){if(i0){printf(%d\n,i);}else{printf(%d\n,-i);}
}int main(void){int a -2147483648;myabs(a);return 0;
} 上面代码编译后出现如下warning unsigned.c: In function main: unsigned.c:12:2: warning: this decimal constant is unsigned only in ISO C90 [enabled by default] 执行后的结果为 -2147483648 额怎么没有变成正数呢。因为32位系统int的范围为-2147483648 ~ 2147483647负数比正数可容纳的值大了1 所以-2147483648取反后就无法保存在int型变量中了。 转载于:https://www.cnblogs.com/dyllove98/p/3149505.html