2016-02-21 107 views
-3

我一直在使用已签名的long long,并且有奇怪的问题 - 即不一致的行为。即C++ long long issues

long long i; 
printf("%d", i); 

这往往会打印出与i的实际值无关的值(这也与cout有关)。

它也有%随机的行为,即

if(i % x == 0) 
     //some code 

这有时会运行即如果i = 15x = 5它只是不会返回true,因此if语句将不会运行的代码。

由于某种原因,它倾向于在x = 7上返回true。

我相信这可能是编译器的错,我认为它只是g ++编译器(它在竞争中)。

任何方式来减轻这个或为什么这样做将不胜感激。

+5

'long long i; printf(“%d”,i);'这是**未定义行为**。 – cpplearner

+3

我应该添加%lld吗? – Cjen1

+4

@ Cjen1 _“我认为这可能是编译器的错误......”这是一种非常罕见的情况,大部分时间是您的代码有bug。 –

回答

0

要使用printf样式语法来打印各种整数类型,需要使用可怕的语法 - 我建议使用C++类型安全的iostreams代替。