第1章习题 Accelerate C++ 学习笔记4

//0
#include<iostream>
#include<string>

int main(int argc, char const *argv[])
{		
	std::cout << "Please enter your name:";

	std::string name;
	std::cin >> name;
	
	std::cout << "Hello, " << name << "!" << std::endl;
	
	return 0;
}
//0示例二
#include<iostream>
#include<string>

int main(int argc, char const *argv[])
{
	std::cout << "Please enter your name:";
	
	std::string name;
	std::cin >> name;
	
	const std::string greeting = " Hello," + name + " !";
	const std::string space (greeting.size(),' ');
	const std::string secend = "*" + space + "*";
	const std::string first (secend.size(), '*');

	std::cout <<  std::endl;
	std::cout << first << std::endl;
	std::cout << "*" << space << "*" << std::endl;
	std::cout << "*" << greeting << "*" << std::endl;
	std::cout << "*" << space << "*" <<	std::endl;
	std::cout << first << std::endl;

	return 0;
}


右上角的为正确结果(空格后以ctr+d作为EOF结束符),左上角是(空格+回车作为结束符),右下角为少了第一行的std::endl(空格后以ctr+d作为EOF结束符)

//1
有效
表达式的结果为:std::string类型的值.
只要操作数任意一个(但不能全是)都可以是字符串字面量( 对象字面量就是引号引起来的部分,必须是等号右边的部分)或者char类型的值

//2
无效
报错:
error: invalid operands to binary expression
原因:"Hello"",world"之间的加号无效,没有定义两个操作数都是字符串常量的的操作符运算函数。
//3
有效,两个字符串字面量都能输出。
原本字符串常量初始化后,是不能修改的,但是{}使得两个字符串常量处于不同的作用域中,互不影响。
#include<iostream>
#include<string>

int main(int argc, char const *argv[])
{
	{
		const std::string s = "a string";
		std::cout << s << std::endl;
	}
	{
		cosnt std::string s = "another string"
		std::cout << s << std::endl;
	}
	return 0;
}
//4
一样的输出,
这里涉及到分号的作用,
作用:就是一个完整语句的结束标志,方便程序编译,不至于产生与设计初衷相违背的逻辑。

这里的改变并不影响语意的表达。
一下情况就会引起的语言的
eg,
do{
程序段S
}while(表达式P);
如果while后面的分号不要了的话,就会导致连同把后面的语句误认为是同一个语句。

1
 while(a<50);
 a++;
2
 for(i=1;i<10;i++);
 b++;
这两个段程序,在whilefor后面加的分号,导致就算条件满足,也不会执行循环体,与当初编写的语意相差甚远。
#include<iostream>
#include<string>

int main(int argc, char const *argv[])
{
	{
		const std::string s = "a string";
		std::cout << s << std::endl;
	
	{
		const std::string s = "another string";
		std::cout << s << std::endl;};}
	return 0;
}
//5
error: use of undeclared identifier 'x'
        std::cout <<  x << std::endl;
一个作用域结束后,x作为局部变量,已经被系统回收了
#include<iostream>
#include<string>

int main(int argc, char const *argv[])
{
	{
		std::string s = "a string";
			
		std::string x = s + ", really";
		std::cout << s << std::endl;
	
	std::cout <<  x << std::endl;
	}

	return 0;
}

6 运行结果
运行结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星蓝雨

如果觉得文章不错,可以请喝咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值