gpt4 book ai didi

c - C警告(clang编译器)“整数文字太大,无法用有符号整数表示”

转载 作者:行者123 更新时间:2023-12-03 12:42:38 25 4
gpt4 key购买 nike

我有这段代码

#include <stdio.h>

typedef signed long long v2signed_long
__attribute__ ((__vector_size__ (sizeof(signed long long) * 2)));

int main()
{
v2signed_long v = {4611686018427387904LL, -9223372036854775808LL};

printf("%lli, %lli\n", v[0], v[1]);
return 0;
}


发出以下警告(相关问题无济于事):

:7:45: warning: integer literal is too large to be represented in
a signed integer type, interpreting as unsigned
[-Wimplicitly-unsigned-literal]
v2signed_long v = {4611686018427387904LL, -9223372036854775808LL};


有没有解决此警告的方法?谢谢!

最佳答案

问题在于-9223372036854775808LL实际上不是整数文字。这是应用了一元9223372036854775808LL运算符的文字-。值9223372036854775808太大而不能容纳在signed long long中,这就是收到警告的原因。

您可以改用表达式-9223372036854775807LL - 1LL来解决此问题。值9223372036854775807signed long long一样适合-9223372036854775807LL,然后减去1即可得到所需的值。

或者,您可以使用宏LLONG_MIN

关于c - C警告(clang编译器)“整数文字太大,无法用有符号整数表示”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60323203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com