c++ primer学习 1.3 注释简介

注释:

两种,分别为单行注释和界定符对注释。单行注释  // 开始,以换行符结束,注释右侧所有内容被编译器忽视。界定符对注释  /*和*/,编译器将落在/*和*/之间的所有内容当作注释。为更好区分,在界定注释符对中每一行前加上*.

注:第二类注释无法嵌套使用。

练习1.7

编译一个包含不正确的嵌套注释程序,观察编译器返回的错误信息。

答:

 对于不正确的嵌套注释,不同编译器给出的错误信息可能是不同的,而且通常很难理解。编译器将第一个"*/"看作注释结束,之后出现的中文文字看作下一条语句,从而给出非法字符的错误信息。如果之后为英文文字,给出不同的错误信息。而且这些错误很难直接与注释错误嵌套挂上钩,程序员需要有一定经验才能快速定位错误,确定错误原因。

练习1.8

指出下列哪些输出语句是合法的

std::cout<<"/*";
std::cout<<"*/";
std::cout<</*"*/"*/;
std::cout<</*"*/"/*"/*"*/;

预测编译这些语句会产生什么结果,实际编译这些语句验证答案(编写一个小程序,每次将上述一条语句作为主体),改正每个编译错误。

答:猜想:一二行语句合法,”“中语句作为字符串输出

三四行不合法,存在注释嵌套

验证思路:每行前加//,运行程序观察错误,以此类推

#include <iostream>

int main()
{
	std::cout << "/*";
	std::cout << "*/";
	//std::cout <</*"*/"*/;
		//std::cout <</*"*/"/*" /*  "*/;
	
	return 0;
}

验证得:猜想错误,一二四条语句正确,第三条语句错误。

第三条第一个双引号被注释掉,<<运算符后真正被编译的内容是”*/,编译器认为这是一个不完整的字符串,报告缺少右引号

  7 error:missing terminating " character

第四条第一个第四个双引号被注释掉,第二个第三个双引号之间/*被认为是字符串内容。

程序运行输出/*

但这样的风格显然是不好的

ps:它为什么要让写小程序啊,不会写,答案也没有,看到让写小程序的时候吓一跳,进阶这么1快吗??应该就是写到程序里验证吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值