C++ Primer学习记录02

来源:互联网 发布:网络词lc是什么意思 编辑:程序博客网 时间:2024/05/19 03:44
             4、       表达式         
※ 求余                    
 %操作符只能被应用在整值类型 char short int和 long 的操作数上                   
 如果有一个 或两个 操作数为负 余数的符号则取决于机器                   
   3.14 % 3; // 编译时刻错误: 浮点操作数                  
   21 % -5; // 机器相关: 结果为 -1 或 1                  
※逻辑与操作符                    
 if(a>0 && arr[a] != 3)    //将有危险的(越界)放在后面                   
 对于操作符的运算,并不保证从左到右的计算顺序                   
 ival++ && ival         ptr != 0 && *ptr++          // 结果是不确定的 
※sizeof                    
返回值的类型是 size_t 这是一种与机器相关的typedef 定义                    
#include <cstddef>    在cstddef 头文件中找到它的定义                    例:size_t array_size = sizeof ia;
  sizeof (type name );                   
  sizeof ( object );             三种格式      
  sizeof object;                   
                    
 string st1( "foobar" );                     
 string st2( "a mighty oak" );                     
 string *ps = &st1;                     
 cout << "st1: " << sizeof( st1 )                // 一个 string 的大小与它所指的字符串的长度无关     
  << " 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;                     
                    
结果  st1: 12 st2: 12 ps: 4 *ps: 12                   
  short : 2                   
  short* : 4        在引用类型上的 sizeof 操作符返回的是包含被引用对象所需的内存长度           
  short& : 2                   
  short[3] : 6                   
                    
※ 类型转换                     
 △隐式类型转换                   
  用一种类型的表达式赋值给另一种类型的对象                  
  把一个表达式传递给一个函数调用 表达式的类型与形式参数的类型不相同                  
  从一个函数返回一个表达式 表达式的类型与返回类型不相同                  
  在混合类型的算术表达式中                  
 △ 算术转换       保证了二元操作符的两个操作数被提升为共同的类型            
  1 为防止精度损失,如果必要的话类型总是被提升为较宽的类型                  
  2 所有含有小于整型的有序类型的算术表达式,在计算之前其类型都会被转换成整 型                  
 如果机器上的 m 型足够表示所有 unsinged short型的值,则unsigned short int也被转换成 int,                   
  否则它会被提升为unsigned int                    
 △ 强制类型转换                   
   static_cast dynamic_cast const_cast和 reinterpret_cast                 
原创粉丝点击