You need to enable JavaScript to run this app. Codeblock编译C++代码出现endl调用错误、scanf警告等问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Codeblock编译C++代码出现endl调用错误、scanf警告等问题求助

问题排查与修复方案

1. error: no matching function for call to 'endl(const char [6], int)'报错修复

endl是C++标准库中仅适用于cout输出流的换行操纵符,不能放入printf函数中使用。你代码中所有混用printf和endl的写法都属于语法错误,两种修正方案二选一:

  • 继续用printf:直接用\n实现换行,比如错误行printf(endl("X: %i", So_hang_thu_nhat + So_hang_con_lai)endl);修改为printf("\nX: %i\n", So_hang_thu_nhat + So_hang_con_lai);
  • 切换为cout输出:用你注释里的正确写法,比如cout << endl << "X: " << So_hang_thu_nhat + So_hang_con_lai << endl;

2. warning: format '%i' expects argument of type 'int*', but argument 2 has type 'int'警告修复

scanf函数要求传入变量的内存地址来存储输入值,你当前所有scanf调用都直接传入了变量名,缺少取地址符&。所有scanf语句都要修正,比如:

  • 原代码:scanf("%i", Cau_tra_loi);
  • 修改为:scanf("%i", &Cau_tra_loi);
    其余所有scanf调用都按上述规则为第二个参数添加&即可解决该警告。

3. 定义的标签无法生效问题修复

C++中标签仅定义不会自动生效,需要配合goto语句跳转才能触发。你当前代码只定义了cau_tra_loi_chung、buoc_tra_loi_phan_1等标签,没有对应的goto语句调用。如果需要实现错误重试逻辑,可以在报错分支添加跳转:

  • 比如运算符输入错误的default分支,打印错误后添加goto cau_tra_loi_chung;,即可让用户重新输入运算符
  • 比如运算类型输入超出范围的分支,打印错误后添加对应goto buoc_tra_loi_phan_x语句,即可让用户重新选择运算类型

内容的提问来源于stack exchange,提问作者le_quoc_bao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 14:33:03