【发布时间】:2016-02-21 09:44:15
【问题描述】:
我一直在使用带符号的 long long,但遇到了奇怪的问题 - 即不一致的行为。即
long long i;
printf("%d", i);
这往往会打印与 i 的实际值无关的值(这也发生在 cout 中)。
它还具有% 的随机行为,即
if(i % x == 0)
//some code
这有时会运行,即如果 i = 15 和 x = 5 它不会返回 true,因此 if 语句不会运行代码。
由于某种原因,它往往会在 x = 7 上返回 true。
我认为这可能是编译器的错误,我认为它只是 g++ 编译器(当时是在比赛中)。
任何减轻这种情况的方法或这样做的原因将不胜感激。
【问题讨论】:
-
long long i; printf("%d", i);这是未定义的行为。 -
我应该添加 %lld 吗?
-
@Cjen1 “我认为这可能是编译器的问题......” 这是一种非常罕见的情况,大多数时候是你的代码有错误.
-
在 C++ 中你应该使用
cout而忽略类型说明符问题stackoverflow.com/q/6400180/995714 stackoverflow.com/q/2844/995714 -
@Cjen1 “我得到的答案不正确(那是 cout)” 你能提供一个minimal reproducible example吗?