在Code::Blocks的MinGW环境中无法识别long long、long double的问题
问题原因及解决办法
一、格式符使用错误(核心问题)
- long long int:你误用了
%Ld作为格式符,正确的格式符是小写的%lld(无论输出printf还是输入scanf都适用)。大写L是为long double设计的格式符,类型不匹配必然触发警告。 - long double:
printf输出时用%Lf,scanf输入时同样用%Lf,注意不要和double的%f混淆。
正确示例代码:
#include <stdio.h> int main() { long long int big_num = 9876543210123LL; long double precise_num = 2.718281828459045235L; printf("long long int 值:%lld\n", big_num); printf("long double 值:%Lf\n", precise_num); scanf("%lld", &big_num); scanf("%Lf", &precise_num); return 0; }
二、编译器默认C标准过旧
Code::Blocks 20.03自带的MinGW GCC默认可能采用C89(ANSI C)标准,而long long int是C99标准才正式纳入的类型。以C89模式编译时,编译器会将这类新类型视为非标准扩展,从而发出警告。
解决步骤:
- 打开Code::Blocks,依次进入 Settings -> Compiler -> Compiler settings -> Other options
- 在输入框中添加编译参数:
-std=c99或-std=c11(推荐使用更新的C11标准) - 点击OK保存设置,重新编译代码即可消除标准不兼容的警告
三、确认编译器版本支持
MinGW GCC 4.0及以上版本完全支持long long int和long double类型,Code::Blocks 20.03自带的版本肯定满足要求。如果仍有疑问,可通过以下方式验证:
- 打开Code::Blocks的 Tools -> Compiler Debugger -> Build options,查看编译器版本;或在命令行执行
gcc --version
内容的提问来源于stack exchange,提问作者Vinayak Deshmukh
相关产品推荐
相关产品推荐

