2.2 变量
练习 2.9
解释下列定义的含义。对于非法的定义,请说明错误在何处并将其改正。
(a) std::cin >> int input_value; (b) int i = { 3.14 }; (c) double salary = wage = 9999.99; (d) int i = 3.14;
#include <iostream> int main() { //std::cin >> int input_value; // error: expected primary-expression before ‘int’ int i = { 3.14 }; // 没警告,丢失精度 //double salary = wage = 9999.99; // 错误,double不支持连=操作,如果需要连=操作需要在类中重载=号操作符 int j = 3.14; // 没警告,丢失精度 return 0; }
练习 2.10
下列变量初始值分别是什么
#include <iostream> std::string global_str; int global_int; int main() { std::cout << global_str << std::endl; std::cout << global_int << std::endl; int local_int; std::cout << local_int << std::endl; return 0; }
练习 2.11
指出下面的语句是声明还是定义
(a) extern int ix = 1024; (b) int iy; (c) extern int iz;
#include <iostream> extern int ix = 1024; // 定义 编译器会警告 extern int iz; // 声明 int main() { //extern int ix = 1024; // 函数内会报错 std::cout << ix << std::endl; int iy; // 定义 std::cout << iy << std::endl; //extern int iz; // 函数内会报错 std::cout << iz << std::endl; return 0; }
练习 2.12
请指出下面的名字中哪些是非法的?
(a) int double = 3.14; (b) int _; (c) int catch-22; (d) int 1_or_2 = 1; (e) double Double = 3.14;
#include <iostream> int main() { //int double = 3.14; // 使用了关键字 //int _; // 使用了符号前缀 //int catch-22; // 使用了关键字 //int 1_or_2 = 1; // 使用了数字前缀 double Double = 3.14; // return 0; }
练习 2.13
下面程序中j的值是多少?
#include <iostream> // 在没有指定域,默认使用块内的局部变量 int i = 42; int main() { int i = 100; int j = i; std::cout << j << std::endl; j = ::i; std::cout << j << std::endl; return 0; }
练习 2.14
下面的程序合法吗?如果合法,它将输出什么?
#include <iostream> // for 循环内i是for循环的局部变量 int main() { int i = 100, sum = 0; for (int i = 0; i != 10; ++i) { sum += i; } std::cout << i << " " << sum << std::endl; return 0; }