读者问:C语言入门要掌握哪些基础知识?
#include main() { int a,b,sum; a=20; /*定义变量a,b,sum为整型变量*/ b=15; /*把整数20赋值给整型变量a*/ sum=a+b; /*把整数15赋值给整型变量b*/ printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /*把两个数之和赋值给整型变量sum*/ }
标识符只能由字母、数字、下划线组成;
标识符的第一个字母必须是字母和下划线;
标识符区分大小写字母,如If和if是两个完全不同的标识符。
合法标识符如下:A6, b_3 , _mn 非法的标识符如下:ab#12 , 8m , tr3:4 , yes no
1)、库函数名字,比如printf,scanf,sin,isdigit等 2)、编译处理命令名,比如define,include
①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2。
②:八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。例:0112,0123,077等
③:十进制:所有数字由0~9构成,逢十进一,十进制数中不会出现10。例:0,12,-15等
④:十六进制:以0x或者0X(数字0加字母x)开头,所有数字由0~9,A~F(或者a~f)构成,逢十六进一(其中A、B、C、D、E、F分别代表10、11、12、13、14、15) 例:0x4A、0X14c7等
①:二进制转八进制:从右往左每三位一组转换成十进制数,将所得数据组合就是对应的八进制数(注意:高位不足三位补零)。例:(010 110 111)2=(267)8
②:二进制转十六进制:从右往左每四位一组转换成十进制数,将所得数据组合就是对应的十六进制数(注意:高位不足四位补零)。例:(0101 1011)2=(5B)16
③:八进制转化二进制:每一位数字转换为三位二进制数字 例:(13)8=(001 011)2= (注意:去掉前面的两个00,因为0在高位没有意义) ④:十六进制转化二进制:每一位数字转换为四位二进制数字 例:(E3)16=(1110 0011)2
例:“ni hao” “happy”等等。
#include #define PI 3. main() { float r,s; r=12.5; S=PI *r*r; printf(“s= %f ”,s); }
1、算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(--)共七种。
2、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。<='' span=''>
3、逗号运算符:用于把若干表达式组合成一个表达式(,)。
4、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(=''>=)、小于等于(<=)和不等于(!=)六种。<='' span=''>
5、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
6、条件运算符:这是一个三目运算符,用于条件求值(?:)。
7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
8、指针运算符:用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符:有括号(),下标[],成员(→,.)等几种。
/的运算分为两种情况: a、“除”的左右两边都为整数时,所得结果必然是整数(注意:仅取整数部分,不是四舍五入)比如:5/2的值为2,不是2.5,1/2的值为0。 b、“除”的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。比如:5/2.0的值为2.5,7.0/2.0的值为3.5.
(1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。
(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。
(3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。
例:a=12; 此表达式读作“将10的值赋值给变量a”。
例:int y=3.5;在变量y中最终存储的是整数3。
先进行“a-=a*a“运算,相当于a=a-a*a=12-144=-132 。(2)再进行“a+=-132“运算,相当于 a=a+(-132)==-264 。
main() { int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf('y=%d,x=%d',y,x); }
例: (!5==1)&&(++i==0) (!5==1)表达式的值为0,所以计算机运行中就跳过(++i==0)此表达式,(!5==1)&&(++i==0)表达式的值为0。
END