程序框架
#include <stdio.h>
int main()
{
//....
return 0;
}
变量
变量名由字母、数字、下划线构成,并且数字不能作为开头。
C99允许在程序的任何地方定义变量 、ANSIC只能在开头定义变量
int a = 0;//初始化
int c,d;//一行定义多个变量
int e = 0,f = 0;//一行里给多个变量初始化
常量
C99 使用关键字const ,可以赋初值,但不能被修改。
const int PRICE = 100;
输出整数
printf("1+4=%d",1+4);//1+4=5
printf("%d+%d=%d",1,4,1+4);//1+4=5
输入(满足格式字符串的内容,按下回车才会输进去)
scanf("%d",&price);
scanf("%d %d",&a,&b);
scanf("%d,%d",&a,&b);
如果中间是一个逗号,那么scanf首先要读到一个整数,然后读到一个逗号,最后再读到一个整数。读到这些的顺序不一定是连续的,但必须逐步满足每一个。
scanf("%d,%d ",&a,&b);
除法运算
①C语言当中,双目运算符“\”左右如果都是int型,那么运算结果,只保留整数部分,小数点后的结果直接被抹去。
②浮点数的输入使用%lf
double a;
scanf("%lf",&a);
运算符的优先级
优先级排在前面的高,比如优先级为1的要比优先级为2的要高。处在同一个优先级的,他们的运算从左到右进行,除了优先级为4的赋值。
【优先级 1 】 + - (单目运算符)
这个的单目运算符+ -意思类似于数学中的正号和符号,而不是加号和减号
例子:a*+b
【优先级 2 】 * / % 分别是乘、除和取余
【优先级 3】 + - 分别是加、减
【优先级 4】 = 赋值
赋值的运算是自右向左进行的,而平常我们x=1+2+3是自左向右进行的,这种情况下相当于x=(1+2)+3。而如果写成x=1=2,按照自右向左的规格,x=(1=2),x的结果应当是(1=2)的结果。
代码风格
其实这个对代码编译后运行出结果没多大的影响,只是如果没有好的代码风格,日后解决问题的效率会变低,就算是自己写的程序也会没有耐心读下去。初学还是养成好习惯吧。
①C语言当中多用次行风格,像这样
int main()
{
}
②等号两边会有空格
int a = 1;//有空格的
int a=1;//没有空格
③不提倡的赋值(嵌入式赋值)
int a=6;
int b;
int c = 1 +(b=a);
看到网上的一个例子,这样表达居然是正确的,很奇特。
第三行做的事情是把a的值赋值给b,然后把1和b相加,赋值给c。但是举例的人提到这样不利于阅读,容易产生错误。
在我原先的理解里,认为b=a,就像一个表达式一样,所以,这样写数字1就不知道和什么相加,所以是错误的。了解原因才知道,这是因为在C语言中,赋值也是运算符,像加号之类的。
int c = 1 + (b + a);
int c = 1 + (b = a);//他们都是运算符,这样就好理解,为什么这一行是对的了