如何在C中输入/输出和比较“long long”变量?

问题描述:

我用C写了一个程序。我的目的是测试“long long”变量是如何工作的。但是结果令我感到不安。
我的OS:WinXP的
我的编译器:TCC(微型C编译器)http://bellard.org/tcc/版本0.9.25
========我的源代码========如何在C中输入/输出和比较“long long”变量?

# include "stdio.h" 
# include "math.h" 
void main() { 
long long n,i; 
scanf("%lld",&n); 
i=42; 
printf("\nn=%lld",n); 
printf("\ni=%lld",i); 
printf("\ni<=n --> %d",i<=n); 
return; 
} 

========源代码=========
运行程序,I输入的终结:

30 

然后,输出是:

n=30 
i=42 
i<=n --> 1 

这意味着“我(42)比n(30)小”。为什么?
当我输入一个很长的变量时是否有错误?
你能告诉我正确的方法吗?
感谢您的帮助!

+0

如果您将n设置为30而不是扫描它,会发生什么情况? – 2010-12-09 14:05:05

+0

我在我的Linux系统上使用GCC获得预期的“0”结果。也许一些tcc问题? – thkala 2010-12-09 14:08:09

+0

GCC 4.4为我工作。 – birryree 2010-12-09 14:10:10

你应该叫printf("%I64d", var)

首先,写你的main()作为

int main(void) { /* ... */ } 

或者,如

int main(int argc, char *argv) { /* ... */ } 

然后,也许你需要一个更好的编译