C 此操作的无符号长整型正确吗?
这是我的密码:C 此操作的无符号长整型正确吗?,c,long-integer,bit-shift,C,Long Integer,Bit Shift,这是我的密码: #include <stdio.h> int main(int argc, char *argv[]) { unsigned long int x = 0; // trying to make x = 2,147,483,648 x = 1 << 31; printf("%lu", x); } #包括 int main(int argc,char*argv[]){ 无符号长整型x=0; //试图使x=2147483
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned long int x = 0;
// trying to make x = 2,147,483,648
x = 1 << 31;
printf("%lu", x);
}
#包括
int main(int argc,char*argv[]){
无符号长整型x=0;
//试图使x=2147483648
x=111无论写在哪里:这是错误的!并且正确地计算。提示:最大值不能是偶数。Hu?它表示类型为unsigned long int ULONG_max 4294967295//2^32-1的对象的最大值。根据流行的请求,我试着帮你一点忙。发布链接第1段的最后一句C标准规定“其实现定义值的大小(绝对值)应等于或大于所示值,并带有相同的符号。”。希望重点有所帮助。还请注意,您在代码中按31
移动,但在文本中按32
移动。关于“按一次计数关闭”的内容到此为止;这只是将值加倍,并导致windows的未定义行为unsigned long
。对于POSIX,这是非常正确的,顺便说一句,因为它有64位,可能与写入的位置重复:这是错误的!并且数学正确。提示:最大值不能是偶数。Hu?它表示unsigned long类型的对象的最大值int ULONG_MAX 4294967295//2^32-1根据流行的要求,我试着帮你一点忙。在C标准的链接中,第1段的最后一句陈述了“它们的实现定义值的大小(绝对值)应等于或大于所示值,并带有相同的符号。”。希望重点有所帮助。还要注意的是,您在代码中按31
移位,但在文本中按32
移位。关于“off by one count”就到此为止;这只会使值加倍,并导致windows的未定义行为unsigned long
。对于POSIX,这是非常正确的,顺便说一句。因为它有64位,可能是重复的
x = 1UL << 31;