运算符:* / % + -
他们的两个运算对象只要有一个是浮点的,结果就是浮点的(除了取模),取模结果都是整数,2%3结果是2(test)
要注意整数相除,2/3是等于0的,因为结果是整的,要得到正确结果,用浮点就行,浮点数小数点后有6位哦(test)
自反运算,它的优秀级灰常低,c=b*=a+2相当于b=b*(a+2),c=b。
自加自减,前缀式int i=5; x=++i; y=i;是先i=i+1再x=i的,所以如果输出x,i,y是6,6,6。
后缀式int i=5; x=i++; y=i;是先x=i再i=i+1的,所以如果输出x,i,y是5,6,6(test)。
数据类型,这里说基本类型,其它如指针,数组这些数据类型不说。
实数(浮点型)都是有符号的,不能用unsigned修饰。
不同数据类型的长度是不同的,char 1B,short 2B,int 4B,long 4B,float 4B,double 8B,这个在不同的C系统中是不同的。
三种进制,0开头的是8进制,0x开头的16进制,其它的为10进制。
数据类型转换,隐式转换:如赋值,表达式,输出时都可能
显式转换:如i=(int)3.1+5.5; i的结果是8.5。
完后,prinft();中的运算顺序:
a=1,b=1;
printf("x= %d,y= %d\n",++a+b,++b+a);
输出是x=4,y=3。在printf()中,是从右向左运算的,先计算++b+a,所以先有b=b+1=2了,然后计算++a+b时,这里的b 是2。
又是运算符,大于小于这些关系运算符优先级都低于加减这些算术运算符,&&和||也是低于的
但是:“!”优先级是比运算符高的
switch(),它的判断表达式只能对整数、字符求值,不能用浮点式
switch( )只是测试是不是相等,不能整大于小于这么些
case后面的表达式应该是整型常数表达式,像5+8这样子的,不能有变量、函数
条件表达式,表达式1?表达式2:表达式3;这是C语言中唯一的三元运算符
迭代和穷举
迭代,Fibonacci数列1,1,2,3,5,8,13,。。。这种东东
也就是
int fib1=1, fib2=1; fib; i=3; //从3才开始是前两个相加的
while(i<n) //n 是我输入的值
{fib = fib1 + fib2;
fib1=fib2; //现在的数1是上一个的数2
fib2=fib; //现在的数2是上一步迭代的值
i ++ ;
}
穷举,百鸡问题,要先确定三个变量的范围,cocks:0~19、hens:0~33、chicks:0~100。
然后当然是:当cocks分别取0到19时,再hens也从0取到33,来找个合适的值(chicks可以减出来)
for(cocks=0;cocks<=19;cocks++)
{
for(hens=0;hens<=33;hens++)
{
chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3.0==100)
printf("%d %d %d\n",cocks,hens,chicks);
}
}
循环结构中的break和continue,break会直接结束循环,continue到开头再次循环。
C中的call by balue(传值调用),函数中对形参的操作不会影响到调用函数中的实参,即形参的值不能回传给实参。
对这个问题的解决:
可以把要调用的数据设成全局变量,然后在函数里面直接用它。
也可以在函数中 return回这个经过函数处理了的变量。
当局部变量与全局变量同名时,局部变量会屏蔽掉全局变量。
程序在内存中分为代码区和数据区:数据区有静态存储区、自动存储区、动态存储区。
局部变量,函数内部的那种,就是按栈结构放在自动存储区的,函数跳出,它也就撤销了。
全局变量分配在静态存储区,它只有当程序结束时它才撤销。
所以就自然引出变量的存储类型:
1,局部自动类型:分配在自动存储区,auto或register声明的,默认是auto。
2,静态局部类型:也是局部变量,但是声明时加了static,这样,就算函数跳出来了,这个变量也还是存在的,只是外部不能用它,但下次再次执行这个函数时,这个值就会用到,而不是初值。
3,全局类型:直接在函数外部定义的,也就是外部变量,整个程序都能用。
4,静态全局类型:也是在函数外部定义,但加了一个static,这样,只能在当前文件中使用。
extern声明的外部变量:一般来说,变量声明在前面,函数才能用它,但是extern可以让变量声明在函数后面;另一方面,在一个文件中用extern声明变量,表明是去外部的其它文件中去找这些变量,这是两个文件的一个通道。
const声明,是将变量放在只读区,只读嘛,当然是不能改变的了。
宏的定义中,带参数时,要将宏体和形参都括起来,像((x)*(x))这种
评论