1. printf("%X",~(~0 << 31) );2. printf("%X",(1 << 31) - 1 );
第1行编译并按预期行事.
第2行给出表达式中的警告整数溢出.
这是因为1< 31被默认处理为有符号的int,因此1< 31 = -2147483648,它是最小可能的整数. 结果,休息1导致溢出.
相关文章
java - 为什么if(n&-n)== n那么n是2的幂? @L_502_1@ 渐近复杂度 - 如果f(n)= O(g(n)),则不应该f(n)* log2(f(n)^ c)= O(g(n)* log2(g(n) ))取决于C的值? 什么是位掩码和掩码? = 0}不正常">计算机科学 - 为什么是{a ^ nb ^ n | n> = 0}不正常 java - 为什么n n有效,而n n不是? 算法 - 大哦:O(n)O(n)... O(n)如何等于O(n ^ 2)? ruby - 为什么array.slice对于(length,n)的行为不同 点击查看更多相关文章转载注明原文:关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)? - 代码日志
1. printf("%X",(1 << 31) - 1 );
第1行编译并按预期行事.
第2行给出表达式中的警告整数溢出.
这是因为1< 31被默认处理为有符号的int,休息1导致溢出.
总结以上是内存溢出为你收集整理的关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?全部内容,希望文章能够帮你解决关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)