c語言中(it)a什麼意思(是強制轉換哈)

時間 2021-08-14 06:07:21

1樓:風若遠去何人留

這個表示式的意思是,把a強制轉換為it*型。

不過it並不是c語言中的標準型別,在這裡可能是int的誤寫,也可能是乙個自定義型別it。

不過是哪種形式並不影響對這個表示式的理解。

(type *)expr形式,含義為

把表示式expr(可以是乙個變數,也可以是乙個表示式的結果)轉為type *型。

一般這類轉換的作用都是賦值給乙個type *型的變數,或者直接對其取位址。下面以int*型分別舉例說明。

1 賦值形式。

例項**如下:

#include

void func(int *a, int len)

int main()

,};int *p;

p = (int *)a;

func(p, 4);

return 0;

}這是乙個很常見的把二維陣列降維到一維指標處理的情況。

p=(int *)a;就是之前說的賦值形式。

這裡也可以簡化為不用中間變數p的形式,即

func((int *)a, 4);

效果是一樣的。

2 直接取值。

其實上乙個例子中,簡化掉中間變數後,就已經是直接取值的一種形式了。

還有一種常見的形式是這樣的:

#include

int main()

;printf("^%d\n", *((int *)str));

}這裡把字元陣列str強制轉換為int*型並取值,然後對其按照整型進行輸出。

綜上所述,強制轉換為某種指標的作用就是把轉換結果當做該指標來用。應用可能多種多樣,但其原理都是相同的。

2樓:匿名使用者

首先gpioa_base是乙個位址,這個位址是你可以直接訪問的。((gpio_typedef *) gpioa_base) 則是把gpioa_base這個位址轉換成乙個gpio_typedef 這個結構體變數的起始位址。也就是乙個指向乙個gpio_typedef變數 的乙個指標。

這樣就很容易對gpioa_base之後的一系列暫存器賦值了。

從你的程式來看,比如crl這個暫存器,它的位址應該就是gpioa_base起始位址,crh就是gpioa_base+4,依次類推。

現在你可以這樣使用。gpio_typedef * preg = ((gpio_typedef *) gpioa_base);

preg->crl = 某值,preg->crh = 某值。這樣閱讀起來方便,自己也不容搞錯。

我只是舉個例子方便你理解。

c語言 int(*a)(int*),*b( ),w[10],c;各變數的分別代表什麼?

3樓:匿名使用者

int(*a)(int*); a是乙個函抄數襲指標可以指向形如 int func( int *)型別bai的du函式int *b() ; //這是乙個函zhi數宣告,b是乙個函式,返回值型別是int *,沒有引數

int w[10],c; w是個dao

陣列,c是個普通整形變數

4樓:匿名使用者

12uahwd1111阿瓦達w愛的偉大,

挖到打dddddddddddddddddddddddd大大大大大大,我的我的地位,

多大哇大回大大大大大大大大大大大,

大娃答上學

達瓦大大大大大大大大大大大大大大大大大大大我的,到底誰打我。

c語言中型別強制轉換什麼意思?通俗點怎麼解釋,不要定義

5樓:匿名使用者

型別轉換嘛bai

,很容易理du解的啦。

型別轉換分zhi

兩種,一種

dao是水到渠成的轉換,內這種轉換沒有容任何錯誤,不會損失精度(比如1.23 不會變成1.2)、不會超出值域,是不帶強制性的,這種轉換是不用強制指定的,程式會自動完成,反正也不會對你的數字產生任何不好的影響。

(就像小孩子希望自己馬上長大,然後作為乙個神,你就立馬實現了他的願望,反正他將來一定會混成這逼樣的。。。)

另一種轉換是會產生不好的影響的,換句話說,也就是需要付出一些代價的,比如精度,你把要3.1415926535897936轉成成單精度的浮點數,他就會成為3.141592,然後後面的精度就沒有了,這是精度的損失。

還有就是值域的損失,你把乙個int值給乙個short,int值有4個位元組,short只有2個位元組,後者壓根就表示不了那麼大的數字,所以就只能截斷取數字了。這兩種損失都會對程式產生可能的負面影響,所以需要強制執行。

6樓:匿名使用者

接受乙個數,返回乙個數,但返回的數和原數具有不同的型別——所以可以有不同的運算規則

7樓:季末—楓

強制:就是把是需要的型別轉為需要的型別。例如

8樓:匿名使用者

假如你一開始定義了乙個float,實型資料,但你想輸出乙個整型的,就可以強制轉換

#include

void main()

這樣輸回出的就是1,否則是1.000000。

不管定答義1點幾,輸出都是1

9樓:匿名使用者

就是抄程式設計人員自覺地將乙個a型別的資料顯示轉化成b型別的資料.如下面**:

int a, b;

float c = 12.3;

a = c;

b = (int)c;

結果是a與b的值都是12.其中,**a=c是隱式轉換,就是編譯器發現型別不匹配自動給轉的.

而b = (int)c就是強制型別轉換.

一般而言,型別轉換有精度損失或者記憶體大小不匹配問題,編譯器通常會報警告.而使用強制型別轉換時,程式設計人員通過這種方式告訴編譯器,這種轉換造成的問題我已知道,你不用警告我了.

c語言中是什麼意思,C語言中 是什麼意思

詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷一件事情是 對 的還是 錯 的,或者說是 成立 還是...

在C語言中是什麼意思,C語言中 c 是什麼意思?

勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!http hi.baidu.com rect blog item b5be43da977c6adbb7fd4855.html 邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯...

在c 語言中n 什麼意思,c 語言中 n 的意思是什麼

雖然過去了很久,但是還是說一下,以後的人搜也會看到。n n n 1 n 2 2 1.例如5!5 4 3 2 1 付費內容限時免費檢視 回答親,您好。這邊正在為您整理最精準的答案,請稍等片刻。親,您好。n 10 是得到n除以10以後的餘數n 10 相當於n n 10,是得到n除以10的商的整數部分舉個...