您的位置:首页 > 其它

学习心得(五)

2008-01-17 17:36 211 查看
1.数组
下标只能为整型常量或整型表达式。为小数时,C编译将自动取整:a[1.5]即a[1]。

2.二维数组
存储时按照行排列。
只对部分元素赋初值时,未赋值的元素自动取0。

3.scanf的例子
为了告诉大家scanf中若参数为数组,就不需要加&,老潭的书中有这样一个例子:
main()
{
char st1[3],st2[3];
printf("input string:/n");
scanf("%s%s",st1,st2);
printf("%s %s/n",st1,st2);
}
我好奇:%s%s之间没有隔断,怎么分清除哪些输入是st1的哪些是st2的?经过调试,原来是这样的:
输入:aa空格aa,输出:aa aa; ——正确
输入:aaaa,输出:无; ——错误
输入:aa回车aa回车,输出:aa aa;——正确
可见,scanf自动地把空格和回车作为结束符。
在输入类型为int时,非法字符(!¥%等等)被gcc视为第一个值的结束符号,第一个值得获得成功,而获得的第二个值是错误的。

5.宏
宏定义是用宏名来表示一个字符串,是个简单的代换,注意带括号以避免错误。
宏定义必须写在函数之外,其作用域为宏定义命令其到源程序结束。如要终止其作用域,可使用#undef命令。
宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。
带参宏定义中,宏名和形参表之间不能有空格。形参不分配内存但愿,因此不作类型定义。
宏定义中可以有多条语句。

6.条件编译
#ifdef AA的意思是,如果AA被定义过,则编译以下语句。
#ifndef AA的意思是,如果AA没有被定义过,则编译以下语句。
#if AA:如果AA的值非零,则编译以下语句。

7.文件使用方式
r(read): 读
w(write): 写
a(append):追加
t(text): 文本文件
b(banary): 二进制文件
+: 读和写。

8.进制
i=012时,编译器认为023是8进制数,以%d打印得10。所以,要考虑数字前加0的情况,以免造成误解。
i=0x12时,认为是十六进制数,以%d打印得18。不区分x的大小写。

9.精确度
float提供7位有效数字,double提供16位有效数字,都精确到小数点后6位(多余的四舍五入)。

10.if和else
else总是和最近的if配对。所以,为了避免二义性,要好好利用{}和缩进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: