#include <stdio.h>
int main()
{
int iV1;
int iV2=-10;
unsigned uV6=33;
char szV3='a';
float fV4;
long double dV5=3.14;
printf("iV1:%p iV2:%p szV3:%p fV4:%p dV5:%p\n",
&iV1,&iV2,&szV3,&fV4,&dV5);
//正常情況:內存空間的分配一定是由低到高
//這裏看到的情況是反過來,函數棧的結構:後進先出
printf("SizeLen:\n 3.14:%d 314:%d \"abcdefg\":%d iV1+szV3+dV5:%d\n",
sizeof(3.14),sizeof(314),sizeof("abcdefg"),sizeof(iV1+szV3+dV5));
printf("%d %u\n",iV2+uV6, uV6+iV2);//雖然打印值正常,但不一定代表表達式是int類型,
//具體是什麼類型 ??? 受到PRINTF的格式說明干擾,內部將unsigned又變成%d明文要求的類型
//C裏默認(隱性的)類型轉換:由低字長轉向高字長。如果字長相等,則由數值範圍上限小的向大的轉換
//01101110=0*2^0+1*2^1+1*2^2+1*2^3+0*2^4+1*2^5+1*2^6=110 -->-110
//有符號類型最高位是符號位,0爲正,1爲負
//11101110 XXX
//01101110 -> 10010001 +1 -> 10010010
//有符號整型數是以補碼的方式存儲的:正數的補碼是它本身,負數的補碼是它的正數全部取反再加1,再補上負數的符號位1
//char:-128~+127 :-0 +0 將-0用來表示多一個數,-1,-128??
//unsigned:10010010=18+2^7=146 這裏沒有標誌位
//00101110 <<1=01011100 左移1位之後變大了2倍 -->左移n位相當於*2^n
//00101110 >>1=00010111 右移1倍這後變成了2倍 -->右移n位相當於/2^n
}
二、變量(例4)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.