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

为什么这段C代码报Illegal instruction 4,-mmacosx-version-min无法解决?

问题原因

你的代码存在3处核心错误,和macOS编译参数没有任何关系,是C语言内存操作和逻辑错误导致的崩溃:

  • 非法的字符串拼接操作:你定义的char* output = ""指向只读的字符串常量区,strcat尝试往只读地址写入数据,且该地址仅能容纳1个结束符\0,没有多余空间存储拼接后的内容,触发内存越界的未定义行为,这是出现Illegal instruction: 4报错的直接原因。
  • 输出判断逻辑写反:if (output)判断的是output指针的地址是否为空,而非判断字符串内容是否为空。此处output指针永远指向有效地址,判断永远为真,就算内存问题修复,也只会输出数字,无法打印Fizz/Buzz。
  • 判断逻辑冗余:你遍历1-5的整除规则,其中1、2、4对应的数组内容为空,就算整除也不会改变输出,属于无效逻辑。
修正后的可运行代码
#include <stdio.h>
#include <string.h>

int main() {
    for (int i = 1; i <= 100; i++) {
        // 定义可写的字符数组作为输出缓冲区,初始化全为空
        char output[10] = {0};
        if (i % 3 == 0) {
            strcat(output, "Fizz");
        }
        if (i % 5 == 0) {
            strcat(output, "Buzz");
        }
        // 判断字符串内容是否为空
        if (strlen(output) == 0) {
            printf("%d\n", i);
        } else {
            printf("%s\n", output);
        }
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:39:03