我正在使用CodeBlocks 10.05和Cygwin 1.7来编译一些C ++代码。操作系统是WinXP SP3。使用的编译器是g ++ 4.5.3。
当我构建以下程序时:
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
unsigned long long a = 12345678901234;
printf("%u\n",a);
return 0;
}
它在构建日志中输出以下内容:
C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp||In function ‘int main()’:|
C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp|9|warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long long unsigned int’|
C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp|9|warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long long unsigned int’|
||=== Build finished: 0 errors, 2 warnings ===|
我不知道为什么CodeBlocks打印出“等”符号。 CodeBlocks有没有办法正确显示字符?
答案 0 :(得分:2)
Cygwin默认使用UTF-8编码,而看起来CodeBlocks假设输出在CP1252中。此外,由于Cygwin告诉它UTF-8可用,gcc使用单独的左右版本的引号字符而不是通常的ASCII字符。结果就是你所看到的。有两种方法可以解决这个问题:要么告诉CodeBlocks使用UTF-8,要么通过设置LANG=C
告诉gcc坚持使用ASCII。我不知道如何在CodeBlocks中执行这些操作。
答案 1 :(得分:0)
将以下环境变量添加到您的计算机:
LANG=C
在Windows 7中,您可以通过转到计算机&gt;添加它。属性&gt;高级系统设置&gt;环境变量,然后是“新......”。 Windows XP中的菜单应该类似。
我希望能回答一个老问题。今天也发生在我身上,我花了一些时间才解决它。