【发布时间】:2011-06-17 09:30:08
【问题描述】:
在此示例中:
long long int x = 1<<38;
NSLog(@"Hello, World!, %qi", x);
我得到“警告:左移计数 >= 类型宽度”,x 的值为零。
long long int 的长度是 8,所以我们应该可以上移 63。
我很困惑....希望得到一些帮助。
【问题讨论】:
在此示例中:
long long int x = 1<<38;
NSLog(@"Hello, World!, %qi", x);
我得到“警告:左移计数 >= 类型宽度”,x 的值为零。
long long int 的长度是 8,所以我们应该可以上移 63。
我很困惑....希望得到一些帮助。
【问题讨论】:
问题不是x,而是1,它是一个带符号的整数字面常量。
试试这个:
long long int x = 1LL << 38;
【讨论】:
long long int x = ((long long int)(1 << 38))。 C 中没有这样的东西可以检查表达式并根据与您对该表达式的使用相对应的预期类型对其进行评估。