练习1.3: 编写程序,在标准输出上打印Hello, World
练习1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用运算符“*”来打印两个数的积。
练习1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算符对象的打印操作放在一条独立的语句中。
练习1.6:解释下面程序是否合法。
Std::cout<<“The sum of ” <<v1;
<< ” and ” << v2;
<< “ is ” << v1+v2 << std::endl;
如果程序是合法的,它输出什么?如果程序不合法,原因何在?应该如何修正?
答:
1.3,1.4,1.5见云盘的习题程序目录附有源码。
1.6 不合法。参考第7页输入运算符(>>)与输出运算符类似,它接受一个istream作为其左侧运算对象,接受一个对象作为其右侧运算对象。它从给定的istream读入数据,并存入给定对象中。与输出运算符类似,输入运算符返回其左侧运算对象作为其计算结果。因此
Std::cin>>v1>>v2; 与 (std::cin>>v1)>>v2;等价
由于此运算符返回其左侧运算对象,因此我们可以将一系列输入请求合并到单一语句中。
本例中的输入操作从std::cin读入两个值,并将第一个值存入v1,将第二个值存入v2。换句话说,它与std::cin>>v1;std::cin>>v2;执行结果是一样的。
因此第二行,输入运算符接受一个ostream为其左侧运算对象,接受一个对象为其右侧运算对象。从第二行开始,(<<)左侧遇见“;”分号,表示上一条语句结束,左侧运算对象为空,因此该语句不能执行,不合法。修正方法,去掉v1,v2后面的分号。
注:对于红色字体理解,就是左侧输入什么就是什么,粗略地理解。意思就是,变量最后保存什么结果,是根据左侧的输入决定的,因此同时一行写很多个输入运算符就这么理解。后续在讨论。
/*
*
*2015-4-25 page 8
*练习1.3
*/
#include<iostream>
int main()
{
std::cout<<"Hello, World"<<std::endl;
return 0;
}
/*
*
*2015-4-25 page 8
*练习1.4
*/
#include<iostream>
int main()
{
std::cout<< "Enter two numbers:" << std::endl;
int v1=0,v2=0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1*v2 << std::endl;
return 0;
}
/*
*
*2015-4-25 page 8
*练习1.5
*/
#include<iostream>
int main()
{
std::cout << "Enter two numbers:" ;
std::cout << std::endl;
int v1=0;
int v2=0;
std::cin >> v1;
std::cin >> v2;
std::cout << "The sum of ";
std::cout << v1;
std::cout << " and ";
std::cout << v2;
std::cout << " is ";
std::cout << v1+v2;
std::cout << std::endl;
return 0;
}