练习1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。
练习1.8:指出下列哪些输出语句是合法的(如果有的话):
A std::cout << “/*”;
B std::cout << ”*/”;
C std::cout << /* ”*/” */ ;
D std::cout << /* “*/ “ */ “ /* “*/;
预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案(编写一个小程序,每次将上述一条语句作为其主体),改正每个编译错误。
答:
1.7 [Error] expected unqualified-id before '/'token
[Error]expected constructor, destructor, or type conversion before '/' token
…
1.8 (验证前)A B应该是对的,C,D错误
(验证后)A B D都是对的,仅有C 是错误的,D中,/* “*/ “ */ “ /* “*/,注意前后/**/
配对,实际是注释掉了一对上下引号“”,保留了中间的 “*/”,最终打印出*/. 。
对于C 的改正特别简单,注意配对,发现只要在/后面加一个上引号,就能打印出*/。
/*
*2015-4-25 page 9
* /*练习1.7*/
*
*/
#include<iostream>
int main()
{
std::cout << "Hello,World" << std::endl;
return 0;
}
/*
*2015-4-25 page 9
*练习1.8
*/
#include<iostream>
int main()
{
//std::cout << "/*";
//第一个可以通过编译,没有错
//std::cout << "*/";
//第二个可以通过编译,没有错
//std::cout << /* "*/ " */ ;
std::cout << /* "*/ " */ "; //修正后,注意配对,实际就加一个上引号,打印出 */ 。
//第三个出错,无法通过编译
//std::cout << /* "*/" /* "/*" */;
//第四个也是对的,可以通过编译
return 0;
}