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

C语言中字符数组的if else相等判断不生效如何解决?

问题原因
  • C语言中直接使用==比较两个字符串时,实际对比的是两个字符串的内存起始地址,而非字符串的内容:
    • array[0]是你定义的二维字符数组中第一行元素的起始地址,位于栈内存区域
    • 字面量"-"存储在程序的常量数据区,二者的内存地址完全不同,因此==判断永远为假,只会执行else分支
  • 额外注意:你代码里的换行符存在笔误,/n是错误写法,正确的换行转义符是\n
可行解决方案

方案1:使用strcmp函数对比字符串内容

需要引入<string.h>头文件,strcmp函数会逐字节对比两个字符串的内容,两个字符串完全相等时返回0:

#include <stdio.h>
#include <string.h>

int main() {
    char array[2][2] = {"-", "+"};
    printf("%s", array[0]);
    
    if(strcmp(array[0], "-") == 0){
        printf("Its a minus\n");
    }
    else{
        printf("\nNothing");
    }
    
    return 0;
}

方案2:直接对比单个字符(适配当前场景的更高效方案)

由于你存储的都是单字符的字符串,直接取数组对应位置的单个字符对比即可,不需要调用字符串处理函数:

#include <stdio.h>

int main() {
    char array[2][2] = {"-", "+"};
    printf("%s", array[0]);
    
    if(array[0][0] == '-'){
        printf("Its a minus\n");
    }
    else{
        printf("\nNothing");
    }
    
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:02