CppPrimer 算術運算子

2021-07-28 14:00:22 字數 2346 閱讀 8275

邏輯運算子

賦值運算子

遞增與遞減運算子

成員訪問運算子

條件運算子

位操作符

sizeof運算子

逗號運算子

算術運算子的運算物件和求值結果都是右值,

在表示式求值前,小整數型別的運算型別會被提公升成較大的整數型別,所有運算物件最終會轉成同一型別

一元 正/負 號運算子 返回 運算物件值(提公升後)副本

需要注意的是bool

bool x = true;

bool y = -x; // y 是true! x被提公升為整數1後取負為-1,然後轉回布林值為true(只有0轉為false)

除:c++11 規定一律向0取整,即直接切掉小數部分

求餘:m%n 要求m,n均為整數且n不為0。當m%n != 0 則 結果與m同號

注意這兩個運算子存在求值順序

除非清楚比較物件是布林型別,否則博使用布林字面值true 和 false作為運算物件

賦值運算子左側必須為 可修改的左值 如:

int i = 0, j = 0, k = 0;

const

int ci = i;

//以下語句均非法

1024 = k; //1024為右值

i+j = k; //i+j返回右值

ci = k; //ci不可修改

賦值運算結果是它的左側運算物件,並且是乙個左值。

結果的型別就為左側運算物件的型別 如

int k =0;

k = 3.14;//結果是int, 值是3

利用初始化列時禁止 收縮轉換

int k = ; //error: 首先要丟去小數點,而且int也不足夠大容納整數部分。因而禁止

int a(3.14); //warning: 只是丟失資料

賦值運算滿足右結合律

int i;

double j;

j = i = 3.5; // i = 3 j = 3;

復合賦值運算子較之其等價形式少求一次值。

前置版本: 將運算物件增1後,將改變後的物件作為求值結果,即將物件本身作為左值返回。

後置版本: 將運算物件增1後,求值的結果是運算物件改變之前那個值的副本,

將物件原始值的副本作為右值返回。因而一般不會使用。

均需作用於左值運算物件。

注意解引用優先順序比 . 運算子要小,注意使用括號。

string s1 = "a string", *p = &s1;

auto size = (*p).size();

形式:cond ? expr1 : expr2;

這是具有求值順序的運算子

一般形式與巢狀形式

string finalgrade = (grade < 60) ? "fail" : "pass";

finalgrade = (grade > 90) ? "high pass" : (grade < 60) ? "fail" : "pass";

條件運算子優先順序較小,使用時注意使用括號

int grade = 59;

string s;

cout

<< endl;

cout

<< s << endl;

cout

<< ((grade < 60) ? "fail" : "pass"); //prints fail;

s = cout

<< (grade < 60) ? "fail" : "pass"; //print 1; and assign "fail" to s

cout

<< grade < 60 ? "fail" : "pass"; //error:compares cout to 60

用作整數型別處理,就是當做二進位制數了操作其位數。這在 《深入理解計算機系統》chapter2有詳細講解。

sizeof 返回 一條表示式或者乙個型別名字所佔的位元組數 為size_t的常量表示式。

滿足右結合律。

含有兩個運算物件,從左到右依次求值(具有求值順序)

先對左側求值,然後結果丟棄,再對右側求值,返回右側的結果

int x = 1;

int y = 2;

int z = 0;

z = (x++, ++y);

cout

<< z << endl;//z = 3;

算術運算子

核心 運算子 就是對常量和變數進行操作的符號。分類 算術運算子,賦值運算子,比較運算子,邏輯運算子,位運算子,三目運算子 算術運算子 注意事項 a 整數相除只能得到整數。如果想得到小數,必須把資料變化為浮點數型別 b 獲取的是除法操作的商,獲取的是除法操作的餘數 class operatordemo...

算術運算子

算術運算子 加 減 乘 除 或 div div只保留整數部分 模 或 mod 查詢員工的姓名和薪資 select ename,salary from t employee 查詢員工的姓名和原來的薪資和漲薪1000元後的薪資 select ename,salary,salary 1000 from t...

算術運算子

算術運算子 和 和 與我們學的數學的理論沒有差別就只舉乙個列子別的以此類推 輸出 13 除法 相對而言就特殊了一點分為兩種情況 1.兩個整數相除,除數不能為零,會報異常,這個符合我們學數學的理論,就不舉列子了 2.有浮點數除數或者被除數中存在浮點數,有三種情況 1 正整數除以0 0.0 2 負整數除...