奇思妙想 · 2024年 4月 26日 0

整数和布尔类型作为条件真假

147 次浏览
  • 早期面向过程的编程语言用整数表达布尔,一般为0为False, 非0为True,比如C/C++.
    • 早期为了表达逻辑的真假,一般用宏来指代。c99引入_Bool, 却不是更常见的Bool或bool类型,因为早期大部分项目把它们当做是宏定义或者整型的别名,标准受现实裹挟。
    • C/Objc/C++用整数代表真假很简单直接,只要数值为0就是假,不为0就是真,不管是指针还是什么结构。
    • VB 也支持整数作为条件。
  • 随着编程语言的抽象加强,编程语言将bool当做数据类型,尽可能让它只当做条件表达式的唯一类型,不允许它和数值直接运算。
    • Java/C#不能用整形数值作为逻辑表达式判断真假,表达更自然。
    • C++虽内置bool类型,依然保持对数值的纯真,和C语言/Python语言一样,同样可以用整形变量作为逻辑判断。
    • Ada/Ruby/Swift等编程语言不能用整形变量作为逻辑判断。
    • JS作为脚本语言,对条件语句的类型没有做限定,任何支持的类型都可以作为判断条件,不管是Number、Object、Function或者Null、Undefined类型等。
      • 如果条件不是Boolean类型,JS将调用Boolean()函数转换成布尔类型。