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

如何正确判断char变量非指定4字符或budget<0并终止程序?

正确实现目标逻辑的方案

你的需求是:当budget小于0,或者selection不是'G'、'B'、'P'、'O'中的任意一个时,终止程序。先明确你两次尝试的问题:

错误写法分析

  1. 第一种写法的逻辑漏洞:

    if(budget < 0 || selection != 'G' || selection != 'B' || selection != 'P' || selection != 'O')
    

    用||连接所有selection !=的条件时,无论selection是什么值,这四个条件里至少有三个为真(比如selection是'G'时,后面三个!=都成立),导致整个if表达式永远为真,完全不符合预期。

  2. 第二种写法的语法逻辑错误:

    if(budget < 0 || selection != ('G' || 'B' || 'P' || 'O'))
    

    在C/C++这类语言中,字符会被转换为对应的ASCII数值参与运算,'G' || 'B' || 'P' || 'O'的结果是布尔值true(因为非0字符都视为真),等价于selection != 1,这和你要判断的“不在指定字符集合里”完全无关。

正确实现方式

基础逻辑写法

用&&连接所有selection !=的条件,表示selection同时不等于所有指定字符,再和budget < 0用||组合:

if (budget < 0 || (selection != 'G' && selection != 'B' && selection != 'P' && selection != 'O')) {
    // 终止程序的代码,比如return、exit等
}

更简洁的写法(C语言)

可以利用strchr函数判断字符是否在指定字符串中,需要包含头文件<string.h>:

#include <string.h>

// ...

if (budget < 0 || strchr("GBPO", selection) == NULL) {
    // 终止程序的代码
}

strchr("GBPO", selection)会返回字符在字符串中的指针,若返回NULL则说明selection不在"GBPO"里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:25:18