相关疑难解决方法(0)

操作"假<true"是否定义明确?

C++规范是否定义:

  1. 布尔参数的'小于'运算符的存在,如果存在,
  2. 4个参数排列的结果?

换句话说,是否由规范定义的以下操作的结果?

false < false
false < true
true < false
true < true
Run Code Online (Sandbox Code Playgroud)

在我的设置(Centos 7,gcc 4.8.2)中,下面的代码吐出我期望的内容(假设C的历史表示false为0,true为1):

false < false = false
false < true = true
true < false = false
true < true = false
Run Code Online (Sandbox Code Playgroud)

虽然我很确定大多数(所有?)编译器会提供相同的输出,这是否由C++规范立法?或者是一个混淆但符合规范的编译器允许判断true是否小于false?

#include <iostream>

const char * s(bool a)
{
  return (a ? "true" : "false");
}

void test(bool a, bool b)
{
  std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ boolean comparison-operators language-lawyer

152
推荐指数
4
解决办法
1万
查看次数

C++预处理器#define-ing a keyword.标准是否符合标准?

这个关于bool和1的问题的评论中帮助解决正在进行的辩论:

符合标准的C++预处理器是否允许#define用户重新定义语言关键字?如果是这样,符合标准的C++预处理器是否允许这样做?

如果C++程序重新定义了一个语言关键字,那么该程序本身是否符合标准?

c++ c-preprocessor

20
推荐指数
3
解决办法
4458
查看次数