第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 运行结果
运行结果

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页