char a = -1;
int b = a;
b是-1
a的符號位是1,並且a是小變數,賦給int,是4個位元組的,大型別,按照低位元組對齊,前面進行符號位擴充
a的二進位制 1111
1111
b的二進位制 1111
1111
1111
1111
1111
1111
1111
1111
前面的1是符號擴充
int a = -256
char b = a;
b是0
按照低位元組對齊,如果大變數是大於char的,多的部分進行截斷,如果變數小於char,就可以
a的二進位制 1111
1111
1111
1111
1111
1111
0000
0000
b的二進位制 0000
0000
前面的1是符號擴充
truncate 截斷
整型提公升
在32位機中,所有位於低於32位的整型資料,在運算過程中先要轉化為32位的整型資料 ,然後才參與運算
浮點數沒有無符號型別的,也就是說沒有unsigned float型別。
轉化規則
if 有運算數是long double,那其他的數也都轉化成long double
else if 有運算數是double,那其他的數也都轉化成double
else if 有運算數是float,那其他的數也都轉化成float
else if 先把數進行整型提公升, 有運算數是unsigned long int,那其他的數都轉化成unsigned long int
else if 乙個數是long int,另乙個數是unsigned int,只要取決於unsigned int裡面的數能否被long ing包含,如果能夠包含,那就都轉成 long int,否則都轉成unsigned long int
else if 有乙個數是long int,都轉化成long int
else if 其中乙個數是unsigned int,另乙個數就轉成long int
else 兩個數都是int
>- 7%-3=1,因為餘數的概念是5/2=2····1;所以餘數應該滿足2*2+1等於被除數,所以7/-3=-2·····1,(-2)*(-3)+1才等於7
程序空間大致分為:系統空間,command args,stack,dynamic lib,heap,data,text
其中data裡面又分為uninit(未初始化)和init(初始化),init又分為rw(讀寫),ro(唯讀)
text存的是二進位制可執行的文字
int main(int args, char *argv) //如果argv接收到的字串在command args裡面
void func(){}
void main()
上述程式壓棧的過程:
作業系統執行狀態-->返回位址-->main()的引數-->mian()執行狀態-->返回位址-->func()的引數
a[10] = 不能理解為全部清零,而是把第乙個設定成0,剩餘的數自動清零
a[10] = ;把下標為4的元素設為20,其他數自動清零
[ ]:基址變址運算子
a[10] = ;
for(i = 0; i < 10; i++)
printf("%d\n", i[a]); //*(a+i) *(i+a) a是基址 i是變址
char *p = 0;
printf("%d\n", sizeof(p));
可以通過1級指標改變0級指標(變數)的內容
可以通過2級指標改變1級指標的指向
可以通過n級指標改變n-1級指標的指向
多維陣列都要轉化為1位陣列來理解
int a[2][3]; ====> int[3] a[2] ====>int[2][3] a
printf("%p %p\n", a+0, a+1); // 相差12 int[3] a[2]
//a+1可以理解為 a[2]裡面有兩個int[3]型別的數,a是a[2]這個陣列的首元素位址,+1就是走了乙個元素型別的長度 就是12
printf("%p %p\n", &a, &a+1); // 相差24 int[2][3] a
//a的型別是int[2][3] 取位址&a 步長就是int[2][3]
繼承和類型別轉化
using system using system.collections.generic using system.linq using system.text namespace classstudy class person public int age public void sayhell...
linux批量kill 某一型別程序
為了清理之前的console consumer 採用如下的 指令碼 進行篩選,然後一次性kill掉 ps ef grep consoleconsumer awk xargs kill 9 這裡是輸出ps ef grep hello 結果的第二列的內容然後通過xargs傳遞給kill 9,其實第二列內...
C 隱式類型別轉化
隱式類型別轉換 可以用 單個形參來呼叫 的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換 1 class person2 5bool issamename const person person 8private 9 string mname 10int mage 11 12int mai...