C 语言中的真与假

先看 C 语言,在 C 语言中,0 表示假,非 0 表示真,如下

#include <stdlib.h>int main(int argc, char *argv[])
{if (1)printf("1 is true\n");elseprintf("1 is false\n");if (0)printf("0 is true\n");elseprintf("0 is false\n");return EXIT_SUCCESS;
}
1 is true
0 is false

逻辑运算符 || 和 && 的特点

A || B ,如果 A 为真,B 就不会被执行了

A && B ,如果 A 为假,B 就不会被执行了

示例

#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{1 || printf("print me after 1 || \n");   // 不打印0 || printf("print me after 0 || \n");  // 打印1 && printf("print me after 1 && \n");   // 打印0 && printf("print me after 0 && \n");   // 不打印return EXIT_SUCCESS;
}
print me after 0 ||
print me after 1 &&

Shell 中的真与假

情况略微复杂,分为 if [ A ] 和 A || B 两种情况

一、先看 if [ A ] ,又分为两种情况

  1. 如果 A 是个数字,则 if [ A ] 始终为真,如下
if [ 1 ] ; thenecho "1 is true"
elseecho "1 is false"
fiif [ 0 ] ; thenecho "0 is true"
elseecho "0 is false"
fi
1 is true
0 is true
  1. 如果 A 是个表达式,则用 A 的返回值也就是状态码,来决定 if [ A ] 的真假,不过当状态码为 0 时 if [ A ] 为真,当状态码为非 0 时 if [ A ] 为假,如下
if [ 5 -eq 5 ] ; thenecho "$? is true"
elseecho "$? is false"
fiif [ 5 -eq 6 ] ; thenecho "$? is true"
elseecho "$? is false"
fi
0 is true
1 is false

二、再看 A || B
A 和 B 一般为命令语句,当 A 执行后返回的状态码为 0 时,说明 A 执行成功, 就不会再执行 B 了;当 A 执行后返回的状态码为非 0 时,说明 A 执行出错,继续执行 B 。状态码含义如下

状态码 描述
0 命令成功结束
1 通用未知错误
2 误用 Shell 命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+n Linux 中信号为 n 的严重错误
130 通过 Ctrl + C 退出
255* 退出状态码越界

验证如下,true 命令执行后,会返回一个正确的结果,它本身就是干这个事情的。我们使用 $? 来直接打印这个正确的结果是几,答案是 0,这也进一步验证了状态码为 0 表示命令执行成功。false 命令同理。

$ help true
true: true返回一个成功结果。退出状态:总是成功。
$ echo $?
0
$ help false
false: false返回一个不成功的结果。退出状态:总是失败。
$ echo $?
1

实用示例

rm /home/test/a.out || exit 1
...
...

如果语句 rm /home/test/a.out 执行成功,就会返回 0,表示语句执行成功,这里的 0 为状态码,表示真,就不会执行 exit 1 了。
相反,如果语句 rm /home/test/a.out 执行失败,就会返回一个非 0 值来表示语句出错原因,状态码非 0 表示假,就会继续执行 exit 1
这种写法就达到了语句执行失败退出整个程序(脚本)的目的。

总结

在 C 语言中,0 表示假,非 0 表示真。
在 Shell 中,作为数字,任何值都是真;作为状态码,0 表示真,非 0 表示假。

Shell 中的真与假相关推荐

  1. 3的n次方在c语言中如何表示真和假,C程序作业答案

    什么是程序及程序设计 程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行 操作的一系列语句和指令.一般分为系统程序和应用程序两大类.程序设计( ...

  2. python0为真还是假_python 中对象真和假的概念是什么

    python 中对象真和假的概念是什么 发布时间:2020-12-14 14:59:23 来源:亿速云 阅读:67 这篇文章给大家介绍python 中对象真和假的概念是什么,内容非常详细,感兴趣的小伙 ...

  3. c语言中用什么表示真假,C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?...

    阅读:5449 大家说了很多,我来补充一个没人提到的.那就是:只要这婚你同意结了,不管你如何委屈.如何不甘.觉得对方条件与你天差地别,在所有外人眼里,你们俩就是半斤八两.臭味相投.三观契合的一对儿,一 ...

  4. 人工智能基础——为什么逻辑学中“假推真”、“假推假”永远是真命题?

    实际上这章讲的是逻辑学,什么合取范式.析取范式啥的,但是哪些形式化的东西我懒得去写,我们不如考虑其中一个最令人感到费解的问题,为什么"假推真"."假推假"是真命 ...

  5. Day04:编程中的“真”“假”?

    一.布尔数 1.什么是布尔数 布尔数是一种数据类型,它只有"真"(True)和"假"(False)两种值.(注:True和False不加引号). [练习1]关于 ...

  6. shell中返回值是1为真还是假_肝!Shell 脚本编程最佳实践

    阅读本文大概需要 12.5 分钟. 来自:Myths https://blog.mythsman.com/2017/07/23/1/ 前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命 ...

  7. shell 中| || () {} 用法以及shell的逻辑与或非

    && 运算符: 格式 command1 && command2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令 ...

  8. 判断正则 shell_【US分享】Shell中的括号

    小U有一天想要使用shell脚本跑一段时间的脚本,写了下面一段shell语句,发现报错了,运行的时候变成了这样: 一开始以为是由于bash将0开头的数字作为8进制了,所以出现08,09这样的数字就会报 ...

  9. shell中if条件字符串、数字比对,[[ ]]和[ ]区别

    原文:https://www.cnblogs.com/include/archive/2011/12/09/2307905.html shell括号 学习shell的时候总是被shell里的条件判断方 ...

最新文章

  1. 【给自己的小练习2-线段树】
  2. Boost:bind绑定和数据成员的测试程序
  3. python省市区三级联动_Django Admin实现三级联动的示例代码(省市区)
  4. frameset 的问题与解决
  5. 在多行中查找和替换vim中的字符串
  6. 纯C#实现的DHT爬虫和磁力搜索引擎 - btcherry.com
  7. 计算机的计算百分比的函数是哪个好,excel用函数计算百分比计算的方法
  8. 913_emacs中使用restart-emacs
  9. 东芝笔记本电脑重装系统
  10. 百度搜索结果页面的参数 搜索框提示次数(rsv_sug1)
  11. 顶级摄影师镜头下的世界美景(组图)
  12. tick timer 间隔_adjtimex修改tick值用法举例
  13. 35个非常有创意的 Flash 网站作品欣赏
  14. 1.12 W10的CMD常用命令,以及CMD装逼操作
  15. 华为机试:DNA序列
  16. SAP BOM的类二维报表
  17. Luogu 4844 LJJ爱数数
  18. Java基础算法题(02):古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  19. 测试两路由器间网速软件,网速检测(TCP Monitor Plus)
  20. 图像均值、标准差、变异系数的意义

热门文章

  1. c/c++ 线程进程
  2. windows突破百度云上传限速
  3. 单片机 李广弟_单片机基础(第3版)
  4. 浙江八年级 python_今年9月起,浙江八年级新增Python编程课程
  5. 操作系统之生产者与消费者
  6. 股市筹码分布的实现效果
  7. PHP环境安装步骤及详解
  8. C语言 输入矩形的长和宽 求矩形面积
  9. 使用nid修改dbname和dbid
  10. c语言程序设计数字电位器,X9C103数字电位器中文.pdf