-
類型決定了可取值的集合,可進行的操作
-
運算符指定要進行的操作
-
表達式組合變量和常量生成新值
類型
-
char 字符型 1字節 == 1 byte == 8bit
-
int 整型 2-4字節取決於編譯器
-
float 單精度浮點
-
double 雙精度浮點
-
short和long限定整型
-
short int sh;
-
long int counterl
-
int可省略
-
short int <= int <= long int
-
通常 short == 16字節
-
long int == 32字節
-
int 16或32字節
-
-
-
unsigned, signed限定char和整型
- char == signed char 還是 char == unsigned char 取決於編譯器
-
long double
常量
-
123
-
1234567890l/1234567890L
-
234u/234U
-
1234567890ul/1234567890UL
-
123.4/12.3e-2 double
-
123.4f
-
123.4l long double
-
037, 0x37,0X37, 0XFUL
-
字符常量 == 1字節整型
-
轉義字符
-
\ooo \013
-
\xhh \xb
-
‘\0’ 表示值爲0的字符 == null
-
-
常量表達式在編譯時求值,而不是在運行時求值.
-
字符串常量 – 字符串字面值
-
"hello world"
=="hello" "world"
-
strlen(s) 返回字符串長度,但不包括’\0’
-
-
枚舉
enum boolean {NO, YES}; // 默認NO == 0
enum escapes {BELL='\a', BACKSPACE='\b', TAB='\t'};
enum months {JAN=1,FAB,MAR,APR};
- 不同枚舉,值必須不同.
- 同一枚舉不同名字可以具有相同值
#include<stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
int main()
{
enum DAY day;
day = WED;
printf("%d",day);
return 0;
}
聲明
先聲明後使用
-
外部變量, 靜態變量 初始化爲0
-
自動變量(局部變量)值爲未定義值 – 無效值.
-
const 值不能修改, 對於數組,所有元素的值不能修改.
-
const double e = 2.7124234;
-
const char msg[] = "warning: "
-
int strlen(const char[]);
-
類型轉換
-
<ctype.h> 定義一組字符的測試和轉換函數
-
如果定義char存儲非字符用途,最好定義 signed char 或 unsigned char
-
函數調用參數是表達式,將會進行類型轉換,在沒有函數原型的情況下,char和short將自動轉換爲int, flost轉換爲double,因此,即使調用函數的參數爲char或float,我們也把函數參數聲明爲int或double. – 最佳實踐,非語法強制約束
-
強制類型轉換
-
sqrt((double) n)
-
通常情況下,參數是通過函數原型聲明的,函數被調用時,聲明將對參數進行自動強制轉換
-
按位運算符
-
只作用於帶符號和無符號的char,short,int,long
-
x=1 y=2 x&y==0 x&&y=1 邏輯與
-
<< 左移 右邊補0 >>右移+signed取決於機器類型, 右移+unsigned補0
三元表達式
c=(a>b)?a:b