在这里开始程序员......
我正在为我的计算机科学课写一个非常简单的程序,我遇到了一个我想更多了解的问题.这是我的代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
char courseLevel;
cout << "Will you be taking graduate or undergraduate level courses (enter 'U'"
" for undergraduate,'G' for graduate.";
cin >> courseLevel;
if (courseLevel == "U")
{
cout << "You selected undergraduate level courses.";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的if语句收到两条错误消息:1)未指定与字符串文字进行比较的结果(改为使用strncmp).2)指针和整数之间的比较('int'和'const char*').
我似乎已经通过将我的U封在单引号中解决了这个问题,或者程序至少仍然有效.但是,正如我所说,我只是想了解为什么我会收到错误,以便我能更好地理解我正在做的事情.
您需要使用单引号.
在C,(和许多其他语言)中,字符常量是包含在单引号中的单个字符1:
'U'
Run Code Online (Sandbox Code Playgroud)
虽然字符串文字是任何数字包含在双引号字符:
"U"
Run Code Online (Sandbox Code Playgroud)
您声明courseLevel为单个字符:char courseLevel;因此您只能将其与另一个字符进行比较char.
当你这样做时if (courseLevel == "U"),左边是a char,而右边是const char*- 指向char该字符串文字中 第一个的指针.你的编译器告诉你这个:
指针和整数之间的比较('
int'和'const char*')
所以你的选择是:
if (courseLevel == 'U') // compare char to char
Run Code Online (Sandbox Code Playgroud)
或者,为了举例:
if (courseLevel == "U"[0]) // compare char to first char in string
Run Code Online (Sandbox Code Playgroud)
注意完整性:您可以使用多个字符常量:
int a ='abcd'; // GCC中的0x61626364
但这肯定不是你想要的.
| 归档时间: |
|
| 查看次数: |
9488 次 |
| 最近记录: |