【问题标题】:long long int in C, Mac OS X, Xcode 3.2.5, field widthC、Mac OS X、Xcode 3.2.5 中的 long long int,字段宽度
【发布时间】:2011-06-17 09:30:08
【问题描述】:

在此示例中:

long long int x = 1<<38;
NSLog(@"Hello, World!, %qi", x);

我得到“警告:左移计数 >= 类型宽度”,x 的值为零。

long long int 的长度是 8,所以我们应该可以上移 63。

我很困惑....希望得到一些帮助。

【问题讨论】:

    标签: c xcode macos 64-bit


    【解决方案1】:

    问题不是x,而是1,它是一个带符号的整数字面常量。

    试试这个:

    long long int x = 1LL << 38;
    

    【讨论】:

    • 谢谢,这是一种享受!虽然没有发生正常的转换,但我很困惑。尽管如此,没有哲学,封装和继续......:-)
    • @John,正常转换发生在右侧评估之后,类似于long long int x = ((long long int)(1 &lt;&lt; 38))。 C 中没有这样的东西可以检查表达式并根据与您对该表达式的使用相对应的预期类型对其进行评估。
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2016-07-29
    相关资源
    最近更新 更多