您的位置:首页 > 编程语言 > C语言/C++

C++ Primer学习记录02

2011-11-04 10:38 232 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: