《C++ Primer》读书笔记(4.2,4.4,4.5,4.6)

来源:互联网 发布:越南进出口数据 编辑:程序博客网 时间:2024/06/05 04:37

关于%

取模[modulus]或求余[remainder]操作符 

21 % -5; // 机器相关 : 结果为 -1 或 1 

如果有一个 或两个 操作数为负 余数的符号则取决于机器 因此 移植性无法保证


 elem_cnt = elem_cnt + (*iter < some_value) 
 *iter < some _value 的布尔值 将提升为 1或 0 


        int ia[ array_size ] = { 0, 1, 2, 2, 3, 5, 8, 13 };         int *pia = ia;
    是非法的 尽管ia 是个左值 但是数组对象本身不能被赋值 只有它包含的元素才能被赋值   as没有这个限制

递增和递减操作符

递增 ++     和递减 --     操作符为对象加1 或减1 操作提供了方便简短的表示

ivec[ ix_vec++ ] = ia[ ix_ia-- ]; 
在用ix_vec 的当前值索引ivec 之后 将ix_vec递增1


ivec[ ++ix_vec ] = ia[ --ix_ia ]; 
在ix_vec 的值被用来索引ivec 之前 它先被递增变成1

条件操作符

cout << "The larger value of "<< i << " and " << j << " is "<< ( i > j << i : j ) << endl; 
 ( i > j << i : j )这里的<<就相当于a?b:c


sizeof 操作符

siseof 操作符的作用是返回一个对象或类型名的字节长度 它有以下三种形式 

         sizeof (type name );          sizeof ( object );          sizeof object; 

返回值的类型是size_t        这是一种与机器相关的typedef 定义 我们可以在cstddef 头文件中找到它的定义 下面的例子使用了sizeof 的两种格式 
         #include <cstddef>          int ia[] = { 0, 1, 2 };          // sizeof返回整个数组的大小          size_t array_size = sizeof ia;          // sizeof返回 int类型的大小          size_t element_size = array_size / sizeof( int ); 
    当sizeof 操作符应用在数组上时 例如上面例子中的ia  它返回整个数组的字节长度 而不是第一个元素的长度 也不是ia 包含的元素的个数


         #include <string>          #include <iostream>          #include <cstddef>          int main()          {                size_t ia;                ia = sizeof( ia ); // ok                ia = sizeof ia; // ok                // ia = sizeof int; // 错误                ia = sizeof( int ); // ok                int *pi = new int[ 12 ];                cout << "pi: " << sizeof( pi )                    << " *pi: " << sizeof( *pi )                    << endl;                // 一个 string的大小与它所指的字符串的长度无关                string st1( "foobar" );                string st2( "a mighty oak" );                string *ps = &st1;                cout << "st1: "     << sizeof( st1 )                    << " st2: "     << sizeof( st2 )                    << " ps: "      << sizeof( ps )                    << " *ps: "     << sizeof( *ps )                    << endl;                cout << "short :\t" << sizeof(short) << endl;                cout << "short* :\t"<< sizeof(short*)       << endl;                cout << "short& :\t"<< sizeof(short&)       << endl;                cout << "short[3] :\t" << sizeof(short[3]) << endl;          }
编译并运行它 产生如下结果 
         pi: 4 *pi: 4 
         st1: 12 st2: 12 ps: 4 *ps: 12 
         short : 2 
         short* : 4 
         short& : 2 
         short[3] : 6 


原创粉丝点击