本文目錄一覽:
C語言里:為什麼不能將int型變量直接賦值給指向int型變量的指針
能,一定能。但你int *p;*p=7;這樣不行。為什麼呢?因為「能直接給指針指向的數據」賦值,而你這裡的p還沒有指向,所以不能賦值;這種指針有個名字叫「懸浮指針」,俗稱野指針,是不能給它賦值的。
C語言int 賦值問題
因為你要求它輸出的是長整型(也就是64位的整數),
而你提供的參數是整數(只有32位)。
int a=40000;
只對4個位元組進行了初始化,而輸出時,將其當成了
一個8個位元組的整數,換句話說,它還使用了另外4個你
沒初始化的位元組,所以當這4個已初始化的位元組與4個
未初始化的位元組合為一個8位元組的長整數時,其值是不
確定的,也就得到了你看到的這個值(實際上,也可能
是其他值)。
樓上調試通過了,是因為在調試環境下,數據區會被清零,
這樣相當於另外的未初始化的4個位元組已被設置為0了。
為了驗證上面的猜測,你可以看看下面這段代碼的結果:
int c = 0;
int a = 40000;
int b = 0;
printf(\”%ld\”,a);
在未調試時,看看它的輸出結果是否40000;
然後改動c=1或b=1,再試試輸出是什麼。
祝你好運!
c語言,int賦值給char
可以按照下面代碼示意的內容操作,即可完成賦值:
char c[4];
int i=100;
*(int*)c = i;
也可以使用memcpy,示意代碼如下:
memcpy(c,i,sizeof(i));
推薦使用第一種方法,這樣當要將值回傳的時候,只需要按照下面的操作即可
i = *(int*)c;
靈活使用指針類型轉換,可以極大的簡化程序代碼,這個問題即是一個好例子
原創文章,作者:FKCSX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329845.html