c語(yǔ)言之父:丹尼斯.里奇
c語(yǔ)言的優(yōu)缺點(diǎn):看書(shū)查找
1.c的引入:
gcc編譯的格式:gcc hello.c -o hello -o是目標(biāo)的意思o(jì)bject;
hello world程序的解析:
< #>:預(yù)處理命令 include:頭文件的包含 <>:把括號(hào)里的內(nèi)容引入到源文件中
<stdio.h>:標(biāo)準(zhǔn)輸入輸出頭文件,是計(jì)算機(jī)自帶的庫(kù),可以直接使用
< main>:函數(shù)名,main()是主函數(shù),c程序源文件有且只能有一個(gè)main()函數(shù)!!!c程序的入口,即所有的c程序都是從
main函數(shù)開(kāi)始執(zhí)行;
int argc:參數(shù)的個(gè)數(shù); char *argv[]:記錄參數(shù)
printf():是庫(kù)函數(shù),包含在<stdio.h>中;
return 0:返回,或者函數(shù)結(jié)束;
注:以上內(nèi)容基本決定了程序的框架;
c的數(shù)據(jù)類型:
基本數(shù)據(jù)類型:
int:基本整型
short int:短整型
long int:長(zhǎng)整型
unsigned :無(wú)符號(hào)
signed:有符號(hào)
char 字符型 getchar 只能得到一個(gè)字符
float 單浮點(diǎn)類型:小數(shù)點(diǎn)后6位
double 雙浮點(diǎn)類型: 小數(shù)點(diǎn)后15位
numf e/E n :e為10的n次方
例:12.2E3<=====>12.2*10^3
enum 枚舉類型
構(gòu)造數(shù)據(jù)類型:
數(shù)組類型,結(jié)構(gòu)體(struct),聯(lián)合體(union)
指針類型:
空類型: void
2.變量的定義:
data:數(shù)據(jù)
type:類型
value:值
DataType Name1,Name2,......,Numen;
可以定義多個(gè)變量,中間用逗號(hào)隔開(kāi),結(jié)尾用分號(hào)結(jié)束??!
DataType Name; 一行定義一個(gè)變量最好
DataType Name1;
建議一行定義一個(gè)變量并初始化
3.標(biāo)識(shí)符:
包括變量名,函數(shù)名,及其它標(biāo)號(hào)等;
(1)標(biāo)識(shí)符的命名要求
字母(A~Z,a~z),下劃線(_),數(shù)字組成;
且規(guī)定:第一個(gè)字符不能為數(shù)字;
(2)命名規(guī)則:
可讀性要高,做到“見(jiàn)名知義”
駝峰命名法;
盡量不要用漢語(yǔ)拼音?。。?/p>
4.格式輸入\輸出:scanf()\printf()
printf("占位符",參數(shù)):按一定格式輸出,一一對(duì)應(yīng)??!
也可以直接輸出printf("====")
%m.nf:m代表總位數(shù)(%5.3f=3.142 包含小數(shù)點(diǎn)加起來(lái)共五位數(shù),小數(shù)點(diǎn)后面三位),n小數(shù)部分保留幾位
%-m.n:左對(duì)齊! %m.n:右對(duì)齊! 正負(fù)決定左右對(duì)齊;
scanf("占位符",參數(shù)): 按一定格式輸入,一一對(duì)應(yīng)!!
&(取地址符):取相應(yīng)地址
#######include<stdio.h>
int main()
{
float numf=1.234;
//按一定格式輸出
printf("numf=%f\n",numf);
//輸入numf的值,&numf為取地址符,將輸入的 數(shù)據(jù)保存
//到numf對(duì)應(yīng)的內(nèi)存空間中!
scanf("%f",&numf);
printf("numf=%5.3f",numf);
}
\
#######include<stdio.h>
int main()
{
int numt=123;
float numf=1.23;
printf("input two num:\n");
//printf給的什么格式scanf就按一定格式輸入
scanf("%d,%f",&numt,&numf);
printf("numt=%d\tnumf=%f\n",numt,numf);
//\t 制表符;
return 0;
}
占位符:
printf scanf
int %d %d
char %c %c
long %ld %d
float %f %f
double %lf %f
字符串 %s
5.常量
數(shù)字常量:123 1 567 -234
字符常量:'d' '$' '?' 'A'
實(shí)型常量:1.234 3.1415926 -1.423
字符串常量:由雙引號(hào)括起來(lái)的字符序列(由一個(gè)或多個(gè)字符組成的)
注意:字符串和字符的區(qū)別
'a':字符 占一個(gè)字節(jié)
"a":字符串 占兩個(gè)字節(jié) 默認(rèn)結(jié)束標(biāo)志為‘\0’, 一般不顯示
表示形式: "ahsoifhaiu" "asdf?<@sdaf"
6.變量和常量的區(qū)別:
變量:
其職可以更改!
先定義,后使用!
常量:
其值不可更改!
隨時(shí)可以使用,無(wú)需定義或聲明!
#include<stdio.h>
int main()
{
int numt=34; //變量先定義后使用
//常量名=值
printf("numt=%d,888=%d\n",numt,888);
return 0;
}
二、運(yùn)算符
1.sizeof():計(jì)算大小,得出對(duì)應(yīng)變量或數(shù)據(jù)類型所占內(nèi)存空間大小
單位:字節(jié)(byte) 1字節(jié)=8位(bit)
sizeof DataType:
64位機(jī)下:
#######include<stdio.h>
int main()
{
printf("sizeof DataType:\n");
printf("sizeof(char)=%ld\n",sizeof(char)); =1
printf("sizeof(int)=%ld\n",sizeof(int)); =4
printf("sizeof(short)=%ld\n",sizeof(short)); =2
printf("sizeof(long)=%ld\n",sizeof(long)); =8
printf("sizeof(float)=%ld\n",sizeof(float)); =4
printf("sizeof(double)=%ld\n",sizeof(double)); =8
return 0;
}
、
#######include<stdio.h>
int main()
{
char ch;
short short_size;
int int_size;
long long_size;
float float_size;
double double_size;
printf("sizeof(ch)=%ld\n",sizeof(ch));
printf("sizeof(short_size)=%ld\n",sizeof(short_size));
printf("sizeof(int_size)=%ld\n",sizeof(int_size));
return 0;
}
注意:對(duì)比數(shù)據(jù)類型所占大小,和其定義的變量所占內(nèi)存的大??!
2.算數(shù)運(yùn)算符(七個(gè))
加:+ 減:- 乘:* 除:/ 取余:% a%b求余 6%4余2
#include<stdio.h>
int main()
{
int a=12;
int b=3;
int sum=a+b;
//或者:int sum;
printf("%d,%d,%d\n",a,b,sum);
return 0;
}
#include<stdio.h>
int main()
{
int a=12;
int b=3;
int sum=a-b;
int c=a*b;
int d=a/b;
//或者:int sum;
printf("%d,%d,%d,%d,%d\n",a,b,sum,c,d);
return 0;
}
自增:++
++i :num=++i; i=i+1; num=i;
i++ : num=i; i=i+1;
#include<stdio.h>
int main()
{
int num=5;
int sum=++num + ++num; 6+6
printf("sum=%d\n",sum);
int i=5;
int j=i++ + i++; 5+5
printf("i=%d j=%d\n",i,j);
}
自減:-- --i i--
#include<stdio.h>
int main()
{
int num=5;
printf("%d\n",++num);6
printf("%d\n",num++);6
printf("%d\n",num--);7
printf("%d\n",++num);7
printf("%d\n",num++);7
}
關(guān)系運(yùn)算符:(結(jié)果成立為1 不成立為0)
大于:>
小于:<
等于等于:==
大于或者等于:>=
小于或者等于:<=
不等于:!=
#######include<stdio.h>
int main()
{
int a=3;
int b=4;
printf("a>b:%d\n",a>b); =0
printf("a<b:%d\n",a<b); =1
printf("a==b:%d\n",a==b); =0
printf("a<=b:%d\n",a<=b); =1
printf("a>=b:%d\n",a>=b); =0
printf("a!=b:%d\n",a!=b); =1
}
逗號(hào)運(yùn)算符(,):
表達(dá)式1,表達(dá)式2,表達(dá)式3;
其中每個(gè)表達(dá)式又可以是一個(gè)逗號(hào)表達(dá)式!
一次計(jì)算表達(dá)式1,表達(dá)式2,表達(dá)式3的值,整個(gè)逗號(hào)表達(dá)式的值取決于最后一個(gè)表達(dá)式的值
#include<stdio.h>
int main()
{
int a=4;
a+2,a3,a-5;
printf("a=%d\n",a); a=4
(a=a+3,a2),a/3; //有等于號(hào)才賦值 這里a=a+3
printf("%d\n",a); a=7
}
使用scanf()注意事項(xiàng)
(1) 一定要嚴(yán)格按照scanf()中的格式輸入變量的值?。?br>
(2) 使用scanf()時(shí),取參數(shù)列表中參數(shù)的地址,scanf()是將輸入的值保存到變量對(duì)應(yīng)的地址中!
(3) 緩存區(qū)問(wèn)題
scanf() 函數(shù)中不能使用換行符:\n;