关于%
取模[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
本文详细介绍了C++中的取模、条件、递增递减及sizeof等运算符的使用方法和注意事项,包括它们的行为特点、语法格式以及一些典型的应用场景。
779

被折叠的 条评论
为什么被折叠?



