日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法

發(fā)布時(shí)間:2024/10/8 c/c++ 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二進(jìn)制求補(bǔ)運(yùn)算符:~

語法

~ cast-expression

備注

二進(jìn)制反碼運(yùn)算符 (~)(有時(shí)稱為“按位反碼”運(yùn)算符)將生成其操作數(shù)的按位二進(jìn)制反碼。即,操作數(shù)中為 1 的每個(gè)位在結(jié)果中為 0。相反,操作數(shù)中為 0 的每個(gè)位在結(jié)果中為 1。二進(jìn)制反碼運(yùn)算符的操作數(shù)必須為整型。

~ 的運(yùn)算符關(guān)鍵字

compl 運(yùn)算符是 ~ 的文本等效項(xiàng)。訪問程序中的 compl 運(yùn)算符有兩種方式:包括頭文件 iso646.h,或使用 /Za 進(jìn)行編譯。

// expre_One_Complement_Operator.cpp

// compile with: /EHsc

#include

using namespace std;

int main () {

unsigned short y = 0xFFFF;

cout << hex << y << endl;

y = ~y; // Take one's complement

cout << hex << y << endl;

}

在此示例中,分配給 y 的新值是無符號(hào)值 0xFFFF 或 0x0000 的二進(jìn)制反碼。

將對(duì)整型操作數(shù)執(zhí)行整型提升,并且結(jié)果類型將是操作數(shù)將提升到的類型。

下標(biāo)運(yùn)算符:[]

postfix-expression [ expression ]

備注

后跟下標(biāo)運(yùn)算符 [ ] 的后綴表達(dá)式(也可為主表達(dá)式)指定數(shù)組索引。

通常,postfix-expression 表示的值是一個(gè)指針值(如數(shù)組標(biāo)識(shí)符),expression 是一個(gè)整數(shù)值(包括枚舉類型)。 但是,從語法上來說,只需要一個(gè)表達(dá)式是指針類型,另一個(gè)表達(dá)式是整型。 因此整數(shù)值可以位于 postfix-expression 位置,指針值可以位于 expression 的方括號(hào)中或下標(biāo)位置。 考慮以下代碼片斷:

int nArray[5] = { 0, 1, 2, 3, 4 };

cout << nArray[2] << endl; // prints "2"

cout << 2[nArray] << endl; // prints "2"

在前面的示例中,表達(dá)式 nArray[2] 與 2[nArray] 相同。 原因是下標(biāo)表達(dá)式 e1[ e2 ] 的結(jié)果由以下所示給定:

*( ( e2 ) + (e1) )

該表達(dá)式生成的地址不是 e1 地址中的 e2 字節(jié)。 相反,該地址將進(jìn)行縮放以生成數(shù)組 e2 中的下一個(gè)對(duì)象。 例如:

double aDbl[2];

aDb[0] 和 aDb[1] 的地址相距 8 字節(jié) - double 類型的對(duì)象的大小。 根據(jù)對(duì)象類型進(jìn)行的縮放將由 C++ 語言自動(dòng)完成,并在其中討論了指針類型的操作數(shù)的加減法的相加運(yùn)算符中定義。

下標(biāo)表達(dá)式還可以有多個(gè)下標(biāo),如下所示:

expression1 [expression2] [expression3]...

下標(biāo)表達(dá)式從左至右關(guān)聯(lián)。 首先計(jì)算最左側(cè)的下標(biāo)表達(dá)式 expression1[expression2]。 通過添加 expression1 和 expression2 得到的地址構(gòu)成一個(gè)指針表達(dá)式;然后 expression3 將添加到此指針表達(dá)式,從而構(gòu)成一個(gè)新的指針表達(dá)式,依此類推,直到添加最后一個(gè)下標(biāo)表達(dá)式。 在計(jì)算了最后的 subscripted 表達(dá)式后,將應(yīng)用間接尋址運(yùn)算符 (*),除非最終指針值將為數(shù)組類型尋址。

具有多個(gè)下標(biāo)的表達(dá)式引用多維數(shù)組的元素。 多維數(shù)組是其元素為數(shù)組的數(shù)組。 例如,三維數(shù)組的第一個(gè)元素是一個(gè)具有兩個(gè)維度的數(shù)組。 以下示例聲明并初始化字符的簡(jiǎn)單二維數(shù)組:

// expre_Subscript_Operator.cpp

// compile with: /EHsc

#include

using namespace std;

#define MAX_ROWS 2

#define MAX_COLS 2

int main() {

char c[ MAX_ROWS ][ MAX_COLS ] = { { 'a', 'b' }, { 'c', 'd' } };

for ( int i = 0; i < MAX_ROWS; i++ )

for ( int j = 0; j < MAX_COLS; j++ )

cout << c[ i ][ j ] << endl;

}

正下標(biāo)和負(fù)下標(biāo)

數(shù)組的第一個(gè)元素是元素 0。 C++ 數(shù)組的范圍是從 array[0] 到 array[size – 1]。 但是,C++ 支持正負(fù)下標(biāo)。 負(fù)下標(biāo)必須在數(shù)組邊界內(nèi);否則結(jié)果不可預(yù)知。 以下代碼顯示了正數(shù)組和負(fù)數(shù)組下標(biāo):

#include

using namespace std;

int main() {

int intArray[1024];

for (int i = 0, j = 0; i < 1024; i++)

{

intArray[i] = j++;

}

cout << intArray[512] << endl;// 512

int *midArray = &intArray[512]; // pointer to the middle of the array

cout << midArray[-256] << endl; // 256

cout << intArray[-256] << endl; // unpredictable

}

上一行中的負(fù)下標(biāo)可能產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,因?yàn)樗趦?nèi)存中指向比數(shù)組的原點(diǎn)低 256 個(gè)字節(jié)的地址。 指針 midArray 會(huì)初始化為 intArray 的中點(diǎn);因此可以對(duì)其使用正數(shù)組和負(fù)數(shù)組索引。 數(shù)組下標(biāo)錯(cuò)誤不會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤,但它們會(huì)產(chǎn)生不可預(yù)知的結(jié)果。

下標(biāo)運(yùn)算符是可交換的。 因此,只要沒有重載下標(biāo)運(yùn)算符(請(qǐng)參閱重載運(yùn)算符 ),表達(dá)式 array[index] 和 array[array] 就一定等效。 第一種形式是最常見的編碼做法,但它們都有效。

總結(jié)

以上是生活随笔為你收集整理的c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。