You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基础C++代码出现运行时错误(Runtime Error)的原因排查求助

排查你的C++代码运行时错误

嘿,我来帮你揪出这段代码的问题~ 先理下你的代码逻辑:你想实现的是,当L大于等于l时输出L%l的结果,若L更小就直接输出L。这个逻辑本身没毛病,但触发运行时错误的大概率原因是输入了l=0的情况——在C++里,对0做取模运算本质是触发了除以零的未定义行为,直接会导致程序崩溃。

咱们来拆解下:当你输入的第二个数是0时,L%l等价于执行L/0,这在任何编程语言里都是绝对不允许的,系统会直接抛出运行时错误终止程序。

那怎么修复呢?你只需要在计算取模前,先加一个对l是否为0的判断:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    long int L;
    long int l;
    cin>>L;
    cin>>l;
    
    // 新增判断:拦截除数为0的异常输入
    if (l == 0) {
        cout << "错误:除数不能为0" << endl;
        return 1; // 返回非0值标记程序异常退出
    }
    
    long int ans=L%l;
    if(L>=l) {
        cout<<ans;
    } else {
        cout<<L;
    }
    return 0;
}

另外还有个小优化:其实L%l的结果本身就包含了L<l的情况(当L<l时,L%l的结果就是L),所以你的条件判断可以直接简化,代码会更简洁:

#include <iostream>
using namespace std;
int main() {
    long int L, l;
    cin >> L >> l;
    
    if (l == 0) {
        cerr << "Error: Division by zero is not allowed." << endl;
        return 1;
    }
    
    cout << (L % l) << endl;
    return 0;
}

最后提个小建议:运行时错误很多时候和输入数据不符合程序预期有关,下次遇到这类问题,先检查输入是否合法(比如这里的除数不能为0),这是排查的第一步哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:57:29