【发布时间】:2011-11-30 18:06:18
【问题描述】:
如果我以这种方式比较两个字符会发生什么:
if ('a' == 'b')
doSomething();
我真的很想知道当语言(和编译器)找到这样的比较时会做什么。当然,如果这是做某事的正确方法,或者我必须使用strcmp()之类的东西。
编辑
等等等等。
由于有人不明白我的真正意思,我决定换一种方式解释。
char x, y;
cout << "Put a character: ";
cin >> x;
cout << "Put another character: ";
cin >> y;
if (x == y)
doSomething();
当然,在if 括号中,您可以将== 替换为任何其他比较运算符。
我真正想知道的是:如何在 C/C++ 中考虑角色?当编译器比较两个字符时,它怎么知道 'a' 和 'b' 不同呢?是指ASCII表吗?
【问题讨论】:
-
优化编译器会意识到这永远不可能,并消除整个语句。
-
@MarcB 我怀疑这可能是一个使用“魔术”字符而不是变量的抽象简化示例。
-
我认为您实际上并不是在询问“a”与“b”的具体比较,因为这显然总是返回 False,而是询问比较单个字符。如果是这样,请编辑您的问题以明确说明。
-
@MarcB 我怀疑这个问题是关于抽象案例的,你的评论针对他的具体例子。
-
也许 OP 是一个正在恢复的 Java 程序员,并且期望像
(new Char('a')).equals(new Char('b'))这样的方法是正确的方法(或者可能是涉及包装器工厂的更复杂的方法)。
标签: c++ c comparison char