C 阶段性总结

知道写博客是一种很好的学习方式,但遗憾的是现在才真正下决心跟下去。不过也不算晚吧,“你觉得晚了的时候,恰恰是最早的时候。”

现在就小小的总结下最近的学习内容吧,肯定不全,不过尽力而为吧。

 
(1)C语言中所有的数据类型:

 
C语言中的数据类型非常“整装”,基本类型、构造类型、指针类型和空类型,清晰明了。没有了C++那么多的类型。
 
(2)常量VS变量:
一个常量有N种表示方式:12(十进制),012(八进制),0x12(数字0和x代表了十六进制)是什么? 是12和10和18.
 
\转义符号 例如:'\n' 、'\101' 只能算一个字符
 

一个字符的多个表示方法:65D(十进制)=41H(十六进制)=101Q(八进制)
字符A可以表示为‘A’ 、‘\x41(十六进制)’、65、0x41(十六进制)、0101(八进制)
 
符号常量:
#define 标示符 常量数据
#define PI 3.14159
 
宏应用非常广泛了,但是小心其中的种种陷阱!
 
变量:
“放药材的标有号码的盒子”。本质上就是代表了内存中的一块空间。C语言是强类型语言。C语言的数据类型被分配的存储空间(多少字节)依据系统和平台而定,不像java是跨平台的,即都是固定字节数目。

(3)变量
 

其实单双精度的区别就是占有内存空间越来越多,精度越来越高!
 

声明变量和初始化的时候不能用连等。 int a=b=c=3;是错误的!

 
(4)常量VS变量,变量究竟需要多少的内存空间。
 
运算符和表达式:运算符其实是特定函数。
 
运算符:
算数运算符、关系运算符、逻辑运算符、赋值运算符(=)、按位运算符、其他运算符。
 
3/5因为3和5都是整型,那么他们的运算结果也只能是整形,0.6这个数值不可能出现,所以只能得0(这与具体机器的取整方向有关吧)。
 
++ --自增 自减 结合性:自右向左! (一般是自左向右,例如+、-、*)
 
eg:    i=2;
          j=-i++;
++,--,-,+是相同优先级,结合方向:自右向左!-i++等价于-(i++)。对于括号内的自增运算,又要先使用i,再使i增加1。
所以j的值为-2,而i的值为3。
 
如果自右向左的话:j=(-i)++;j还是-2而i还是3啊。??
 

 
非0值就代表“真”,0值就代表假。0、0.0、\0(字符型)、NULL(指针型)

结合性:  !:自右向左, &&和||:自左向右。
 
在逻辑表达式的求解中,并不是所有的逻辑表达式都会被求值,只有必须得出逻辑表达式的值的时候才会继续去求解。
a=0;b=1;c=2;
d=a++&&b++&&--c;(++ --属于算术运算符)
d=(a++)&&(b++)&&(--c);a的值为1,b的值为1,c的值为2。陷阱啊!b++和--c都没有被执行!
 
x=(y=12)/4;y的值为12,x的值为3,表达式的值为3。
(x=y)=12/4是错误的,因为第二个赋值运算符的左边不是一个变量,而是一个表达式啊。

(5)
运算符本质是内部函数。
a*=b+c;等价于:a=a*(b+c);
 
eg:     a=2;
         a+=a*=a;
右结合性,a*=a先计算啊!a+=a*=a;a+=(a*=a);a+=a;(a的值为4)
最后a的值为8。
 
           真       假
exp1?exp2:exp3
 
逻辑>条件>赋值。
 
eg:a=5;b=3;
     --a==b++?a++:b++;
--a得到4==3(b)吗,明显不等于,这时候执行第一个b++,b的值变为4,然后表达式的值为第三个表达式,也就是b的值,为4,然后执行第二个b++,b的值变为5,最后,a的值为的4,b的值为5,表达式的值为4。
 
y = x>10?x/10:x>0?x:-x;自右向左,先计算右边。先计算x>0?x:-x。
 
 
sizeof(类型名) 。sizeof是运算符!?!sizeof是运算符!?!
获得整型 字节数!
 
不存在从int到float的转换,int和float都会上升为double
eg:

 
int和float都直接提升为double了 。

 
9-20:6-1
 
C语言语句

 
C语言本身不提供输入/输出语句
这由标准I/O库提供的。printf和scanf并不是关键字。
 
1、字符输入函数:
int getchar(void);还记得标准模式和非标准模式吗,用termi....那个结构控制来着!
从标准输入设备读入一个字符,返回该字符的ASCII码值,并且将敲入的字符“回显”在屏幕上。
被包含于“#include <stdio.h>”
注意!

2、字符输出函数;
int putchar(int);
向标准输出设备(一般是显示器)输出一个字符,并返回输出字符的ASCII的码值。
main()                                    
{
     int a = 65;
     putchar(a);                          程序输出:ABBC
     char b = 'B';
     putchar(b);
     putchar('B'+1);
}
 
3、格式输出函数;
int printf(char* format [,argument,...]);出错的话返回负数。
printf("格式控制字符串",输出项列表); 是英文的双引号。
 
%[flags0][width][.prcc][F|N|h|L][type]
 

 
%加上:
 

 
字符串的格式8.2的需要注意下
 

 
 
注意:使用printf时候参数列表的求值顺序不同,根据编译器和系统不同而不同!
 
4、格式输入函数;
int scanf(char *format [,argument,...]);
按规定格式从键盘输入若干任何类型的数据给argument所指的单元,返回读入并赋给argument的数据个数,遇到文件结束返回EOF,出错返回0。

 

 

posted @ 2012-10-22 21:32  眉目清扬  阅读(231)  评论(0编辑  收藏  举报