学习C++primer心得08.5.25以前

来源:互联网 发布:windows配置ntp客户端 编辑:程序博客网 时间:2024/05/18 13:30

1.2. 初窥输入/输出
endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。

#include <iostream>---〉  std::cin>>
#include <iostream.h>---〉cin>>

标准库的头文件用尖括号 < > 括起来,非标准库的头文件用双引号 " " 括起来。
当调用成员函数时,(通常)指定函数要操作的对象。语法是使用点操作符(.):
  std::cout<<sizeof(int)<<std::endl;
  std::cout<<sizeof(bool)<<std::endl;
  std::cout<<sizeof(char)<<std::endl;
  std::cout<<sizeof(wchar_t)<<std::endl;
  std::cout<<sizeof(short)<<std::endl;
  std::cout<<sizeof(long)<<std::endl;
  std::cout<<sizeof(float)<<std::endl;
  std::cout<<sizeof(double)<<std::endl;
  std::cout<<sizeof(long double)<<std::endl;
4,1,1,2,2,4,4,8,8

zz

void fun( int input)
{
    if (input >= 8)
        fun(input/8);
    printf("%c","0123456789ABCD"[input%8]);
}
printf("%c","0123456789ABCD"[input%14]);
详情可以参见expert c programming
“01234...."是一个字符串,C默认把它当作一个字符数组,引用的时候以首地址作为数组第一个元素的地址,而[]算符可以被看作是一个加法算法,将其换算到以& '0'为首地址的数组的相应位置。

顺便说一个比较有趣的内容
int a[10]={。。。};
3[a]和a[3]的结果是一样的

在字符字面值前加 L 就能够得到 wchar_t 类型的宽字符字面值。如:L'a'
我们可以将任何字符表示为以下形式的通用转义字符:/ooo
处理长字符串有一个更基本的(但不常使用)方法,这个方法依赖于很少使用的程序格式化特性:在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
浮点常量可以使用日常的书写方法。如果整数部分或小数部分为0,则可以省略这一部分,但要保留小数点。
变量名,即变量的标识符,可以由字母、数字和下划线组成。变量名必须以字母或下划线开头,并且区分大小写字母:C++ 中的标识符都是大小写敏感的。
C++ 支持两种初始化变量的形式:复制初始化和直接初始化。复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中:
      int ival(1024);     // direct-initialization
      int ival = 1024;    // copy-initialization
std::cin >> int input_value; wrong

声明用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern:

      extern int i;   // declares but does not define i
      int i;          //  declares and defines i

如果声明有初始化式,那么它可被当作是定义,即使声明标记为 extern:
      extern double pi = 3.1416; // definition
只有当 extern 声明位于函数外部时,才可以含有初始化式。
Exercise 2.20: Given the following program fragment, what values are printed?

下列程序段将会输出什么?

      int i = 100, sum = 0;
      for (int i = 0; i != 10; ++i)
           sum += i;
      std::cout << i << " " << sum << std::endl;

 
Exercise 2.21: Is the following program legal?

下列程序合法吗?

      int sum = 0;
      for (int i = 0; i != 10; ++i)
          sum += i;
      std::cout << "Sum from 0 to " << i
                << " is " << sum << std::endl;

在 C++ 标准制定之前,在 for 循环中声明的变量在循环外也可以访问. 然而,在 ISO C++ 中,for 循环变量的作用域被限制为循环本身。虽然这一改变不可否认地具有其意义,但是它却影响到了老代码以及新代码。

原创粉丝点击