一、待轉換的值和目標型別不匹配
- (1)目標型別是無符號型別,且待賦的值是整數時,額外的位將被忽略,例如:目標型別時8位unsigned char,待賦的值時原始值求模256
- (2)如果目標型別是一個有符號的整數,且待賦的值是整數,結果因實作而異
- (3)如果目標型別是一個整數,且待賦的值是浮點數,該行為是未定義的,
- 浮點值被轉換為整數型別會進行截斷,例如:26.325截斷為26
#include<stdio.h>
int D26_1_conver(void) {
char ch;
int i;
float fl;
fl = i = ch = 'C';
printf("ch=%c,i=%d,fl=%2.2f\n", ch, i, fl);
ch = ch + 1;
i = fl + 2 * ch;
fl = 2.0 * ch + i;
printf("ch=%c,i=%d,fl=%2.2f\n", ch, i, fl);
ch = 1107;
printf("Now ch=%c\n", ch);
ch = 80.89;
printf("Now ch = %c\n", ch);
return 0;
}

二、強制型別轉換
- 和Java一樣,用(型別)變數名進行強制轉換
三、sizeof
- 獲取器右側運算物件的大小(以位元組為單位),運算物件可以是一個被圓括號括起來的型別說明符,如:sizeof(float), 或者是一個具體的變數名、陣列名等,如:sizeof foo
四、帶引數的函式
- 下面這種傳遞引數在Java中好像是不允許的,因為Java中是有“多型”特性的,如果可以的話,那么Java的多型不管用了
#include<stdio.h>
void pound(int n);//ANSI函式原型宣告
int D26_2_pound(void) {
int times = 5;
char ch = '!'; //ASCII碼是33
float f = 6.0f;
pound(times); //int型別的引數
pound(ch); //和pound((int)ch);相同
pound(f); //和pound((int)f);相同
return 0;
}
void pound(int n) { //ANSI風格函式頭
while (n-- > 0) {
printf("#");
}
printf("\n");
}

在ANSI C之前,C使用的是函式宣告,而不是函式原型,函式宣告只是指明了函式名以及回傳型別,沒有指明引數型別,為了向下兼容,C現在允許void pound();//ANSI C之前的函式宣告,如果不加int n,那么程式中pound(f)會失敗
五、原始碼:
- D26_1_conver.c
- D26_2_pound.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D26_1_conver.chttps://github.com/ruigege66/CPrimerPlus/blob/master/D26_2_pound.c- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關注微信公眾號:傅里葉變換,個人賬號,僅用于技術交流

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140656.html
標籤:C
