c语言之父:丹尼斯.里奇
c语言的优缺点:看书查找
1.c的引入:
gcc编译的格式:gcc hello.c -o hello -o是目标的意思object;
hello world程序的解析:
< #>:预处理命令 include:头文件的包含 <>:把括号里的内容引入到源文件中
<stdio.h>:标准输入输出头文件,是计算机自带的库,可以直接使用
< main>:函数名,main()是主函数,c程序源文件有且只能有一个main()函数!!!c程序的入口,即所有的c程序都是从
main函数开始执行;
int argc:参数的个数; char *argv[]:记录参数
printf():是库函数,包含在<stdio.h>中;
return 0:返回,或者函数结束;
注:以上内容基本决定了程序的框架;
c的数据类型:
基本数据类型:
int:基本整型
short int:短整型
long int:长整型
unsigned :无符号
signed:有符号
char 字符型 getchar 只能得到一个字符
float 单浮点类型:小数点后6位
double 双浮点类型: 小数点后15位
numf e/E n :e为10的n次方
例:12.2E3<=====>12.2*10^3
enum 枚举类型
构造数据类型:
数组类型,结构体(struct),联合体(union)
指针类型:
空类型: void
2.变量的定义:
data:数据
type:类型
value:值
DataType Name1,Name2,......,Numen;
可以定义多个变量,中间用逗号隔开,结尾用分号结束!!
DataType Name; 一行定义一个变量最好
DataType Name1;
建议一行定义一个变量并初始化
3.标识符:
包括变量名,函数名,及其它标号等;
(1)标识符的命名要求
字母(A~Z,a~z),下划线(_),数字组成;
且规定:第一个字符不能为数字;
(2)命名规则:
可读性要高,做到“见名知义”
驼峰命名法;
尽量不要用汉语拼音!!!
4.格式输入\输出:scanf()\printf()
printf("占位符",参数):按一定格式输出,一一对应!!
也可以直接输出printf("====")
%m.nf:m代表总位数(%5.3f=3.142 包含小数点加起来共五位数,小数点后面三位),n小数部分保留几位
%-m.n:左对齐! %m.n:右对齐! 正负决定左右对齐;
scanf("占位符",参数): 按一定格式输入,一一对应!!
&(取地址符):取相应地址
#######include<stdio.h>
int main()
{
float numf=1.234;
//按一定格式输出
printf("numf=%f\n",numf);
//输入numf的值,&numf为取地址符,将输入的 数据保存
//到numf对应的内存空间中!
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.常量
数字常量:123 1 567 -234
字符常量:'d' '$' '?' 'A'
实型常量:1.234 3.1415926 -1.423
字符串常量:由双引号括起来的字符序列(由一个或多个字符组成的)
注意:字符串和字符的区别
'a':字符 占一个字节
"a":字符串 占两个字节 默认结束标志为‘\0’, 一般不显示
表示形式: "ahsoifhaiu" "asdf?<@sdaf"
6.变量和常量的区别:
变量:
其职可以更改!
先定义,后使用!
常量:
其值不可更改!
随时可以使用,无需定义或声明!
#include<stdio.h>
int main()
{
int numt=34; //变量先定义后使用
//常量名=值
printf("numt=%d,888=%d\n",numt,888);
return 0;
}
二、运算符
1.sizeof():计算大小,得出对应变量或数据类型所占内存空间大小
单位:字节(byte) 1字节=8位(bit)
sizeof DataType:
64位机下:
#######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;
}
注意:对比数据类型所占大小,和其定义的变量所占内存的大小!
2.算数运算符(七个)
加:+ 减:- 乘:* 除:/ 取余:% 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
}
关系运算符:(结果成立为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
}
逗号运算符(,):
表达式1,表达式2,表达式3;
其中每个表达式又可以是一个逗号表达式!
一次计算表达式1,表达式2,表达式3的值,整个逗号表达式的值取决于最后一个表达式的值
#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; //有等于号才赋值 这里a=a+3
printf("%d\n",a); a=7
}
使用scanf()注意事项
(1) 一定要严格按照scanf()中的格式输入变量的值!!
(2) 使用scanf()时,取参数列表中参数的地址,scanf()是将输入的值保存到变量对应的地址中!
(3) 缓存区问题
scanf() 函数中不能使用换行符:\n;