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

如何修复C语言中‘invalid operands to binary |’编译错误?

错误修复方案:C语言编译错误(invalid operands to binary |)

错误原因

你代码里误用了按位或运算符|:strstr()函数返回值是char*类型(找到子串返回非空指针,未找到返回NULL),而|只能用于整数类型运算,无法直接对指针操作,这就是编译报错的核心原因。

修复代码

将原代码行:

if (strstr(argv[3], ".js") | strstr(argv[3], ".html")) {

替换为以下两种写法之一:

  1. 显式判断指针非空(可读性更强):
if (strstr(argv[3], ".js") != NULL || strstr(argv[3], ".html") != NULL) {
  1. 利用指针的布尔特性(更简洁):
if (strstr(argv[3], ".js") || strstr(argv[3], ".html")) {

补充说明

  • 使用**逻辑或运算符||**替代按位或|,||支持布尔逻辑判断,且会触发短路求值(左边为真时不再计算右边),完全匹配你“只要文件名后缀是.js或.html就执行后续逻辑”的需求。
  • 修复该编译错误后,程序可正常编译运行,进而生成预期文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:45:54