VC++程序常见错误 提示(4)---gyy整理
2013-10-17 13:26
453 查看
与字符常量与字符串常量相关的编译错误
字符常量是用单引号' 括起来的一个字符,如普通字符常量 'a' '$' 等、有某些控制作用的字符常量'\n' '\r' '\a' 等转义字符、用3位八进制数表示的转义字符 '\101' 、用2位16进制数表示的转义字符'\x41' 等。
只要是字符常量(不管是普通的,还是转义的),都要用单引号进行界定,除了转义字符字符,普通字符常量在单引号中只能有一个字符。 转义字符常量必须用单引号进行界定,并且单引号内的第一个字符必须是“\”来表示其是转义字符。
以下是关于字符常量和字符串常量中常见的相关错误:
(1)在书写普通字符常量时,如果单引号内出现多个字符,编译时会出现以下错误:
error C2015: too many characters in constant //字符常量中的字符太多
以下是错误案例
编译后如图
修改后代码
错误分析:
单引号表示字符型常量。一般的,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:
if (x == 'x || x == 'y') { … }
值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASCii码作为一个整数(int,4B)整体看待的数字。
例如
编译不出错,运行结果如下
运行结果并不是我们期待的abcd,要想输出abcd,可以修改程序
或
(2)在书写普通字符常量时,如果单引号内出现0个字符,即单引号内没有任何内容,如'',尤其是输出空格字符时' '时,有时会错误书写成'',编译时会出现以下错误:
error C2137: empty character constant //空字符常量,即字符常量中没有内容
以下是错误案例
修改后程序,在''中加一个空格,变为' '
(3)如果在书写时,作为字符常量界定的单引号要成对出现,若不成对,编译一定会报错。
经常会出现以下错误:error C2001: newline in constant //表示在常量中出现了换行
还经常伴随错误:error C2015: too many characters in constant
//字符常量中的字符太多
以下是错误案例-字符常量错误
作为字符串常量界定的双引号也要成对出现,若不成对,编译一定会报错。
经常会出现以下错误:error C2001: newline in constant //表示在常量中出现了换行
以下是错误案例-字符串常量错误
编译时出错如下图
错误 error C2001: newline in constant //表示在常量中出现了换行 的分析:
(1)字符串常量、字符常量中是否有换行。
(2)在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
(3)在这语句中,某个字符串常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。
(4)在这句语句中,某个字符常量的尾部是否漏掉了单引号。
(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
字符常量是用单引号' 括起来的一个字符,如普通字符常量 'a' '$' 等、有某些控制作用的字符常量'\n' '\r' '\a' 等转义字符、用3位八进制数表示的转义字符 '\101' 、用2位16进制数表示的转义字符'\x41' 等。
只要是字符常量(不管是普通的,还是转义的),都要用单引号进行界定,除了转义字符字符,普通字符常量在单引号中只能有一个字符。 转义字符常量必须用单引号进行界定,并且单引号内的第一个字符必须是“\”来表示其是转义字符。
以下是关于字符常量和字符串常量中常见的相关错误:
(1)在书写普通字符常量时,如果单引号内出现多个字符,编译时会出现以下错误:
error C2015: too many characters in constant //字符常量中的字符太多
以下是错误案例
#include <iostream> using namespace std; int main() { cout<<'abcdefg'<<endl; return 0; }
编译后如图
修改后代码
#include <iostream> using namespace std; int main() { cout<<'a'<<'b'<<'c'<<'d'<<'e'<<'f'<<'g'<<endl; return 0; }
错误分析:
单引号表示字符型常量。一般的,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:
if (x == 'x || x == 'y') { … }
值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASCii码作为一个整数(int,4B)整体看待的数字。
例如
#include <iostream> using namespace std; int main() { cout<<'abcd'<<endl; return 0; }
编译不出错,运行结果如下
运行结果并不是我们期待的abcd,要想输出abcd,可以修改程序
#include <iostream> using namespace std; int main() { cout<<"abcd"<<endl; return 0; }
或
#include <iostream> using namespace std; int main() { cout<<'a'<<'b'<<'c'<<'d'<<endl; return 0; }
(2)在书写普通字符常量时,如果单引号内出现0个字符,即单引号内没有任何内容,如'',尤其是输出空格字符时' '时,有时会错误书写成'',编译时会出现以下错误:
error C2137: empty character constant //空字符常量,即字符常量中没有内容
以下是错误案例
#include <iostream> using namespace std; int main() { cout<<'a'<<''<<'b'<<endl; return 0; }
修改后程序,在''中加一个空格,变为' '
#include <iostream> using namespace std; int main() { cout<<'a'<<''<<'b'<<endl; return 0; }
(3)如果在书写时,作为字符常量界定的单引号要成对出现,若不成对,编译一定会报错。
经常会出现以下错误:error C2001: newline in constant //表示在常量中出现了换行
还经常伴随错误:error C2015: too many characters in constant
//字符常量中的字符太多
以下是错误案例-字符常量错误
#include <iostream> using namespace std; int main() { cout<<'a'<<'b'<<'c<<endl; return 0; }
作为字符串常量界定的双引号也要成对出现,若不成对,编译一定会报错。
经常会出现以下错误:error C2001: newline in constant //表示在常量中出现了换行
以下是错误案例-字符串常量错误
#include <iostream> using namespace std; int main() { cout<<"abc<<endl; return 0; }
编译时出错如下图
错误 error C2001: newline in constant //表示在常量中出现了换行 的分析:
(1)字符串常量、字符常量中是否有换行。
(2)在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
(3)在这语句中,某个字符串常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。
(4)在这句语句中,某个字符常量的尾部是否漏掉了单引号。
(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
相关文章推荐
- VC++程序常见错误 提示(2)---gyy整理
- VC++程序常见错误 提示(1)---gyy整理
- VC++程序常见错误 提示(3)---gyy整理
- 【整理】C语言上机程序调试功能键及常见错误提示
- VC程序提示 Expression:("Buffer too small",0) 错误
- VC开发程序,常见C2001,C2005等错误的原因浅析
- 运行hadoop MapReduce程序常见错误及解决方法整理
- 运行hadoop MapReduce程序常见错误及解决方法整理
- 网页常见错误提示整理
- VC程序调试常见错误
- eclipse开发Android程序时一些常见问题与错误提示
- VC程序提示 Expression:("Buffer too small",0) 错误
- 运行hadoop MapReduce程序常见错误及解决方法整理
- VC ++ 编译模拟器常见错误整理
- C++\C编程程序常见错误整理
- VC编译程序,运行时提示运行错误“由于应用程序的配置不正确,……”解决方法
- Android常见错误 整理收集
- VC6工程转VC9工程常见错误
- 自己整理的:学习verilog DHL问题笔记——Quartus常见错误
- [错误提示]VC++, Project Engine is not properly installed