大一学习C时的学习笔记,放出来共享下,嘻嘻。不过当时使用的编译器是TC或者VC6.0,即使用的C标准是C90而非最新的C99标准,故和现在的编译结果有些许出入。当然学习以动手为主,照搬书上的知识是学不到任何东东的。本文仅供拓展自我使用。
C细节注意 (2008年2月13日整理)
1.scanf()中用%lf代表双精度数,用%f代表浮点数,这与printf()通用%f代表不同。
2.二维浮点数数组的输入一定要先声明一个变量,接着把值赋给这个变量,然后再将该变量值赋给数组。见如下代码:
#include <stdio.h>
main(){
float a[2][3], x;
int i, j;
for(i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
scanf("%f", x);
a[i][j] = x;
}
}
}
3.整数在计算机中是准确表示的,可以用二进制数表示。当用八进制数表示时,第一位数字前必须加0(数字);用十六进制数时必须加0x;无符号整数的末尾必须加字母u或U;长整数的末尾必须加字母l或L。
4.auto, register 与 static, extern 内的比较:
(一) auto 和 register 型变量的初始化是在程序执行期间完成的;
static 和 extern 型变量的初始化是在编译期间完成的。
(二) static 和 extern 型变量只能用常数或常数表达式进行初始化;
auto 和 register 型变量除常数或常数表达式外还可用已初始化过的变量进行初始化。
如:
int a = 3 + 2, b = 6, c = a + 1;
static float x = 5.6 + 7.3, y = 0.7;
(三) auto 和 register 型变量若未初始化,其值是不定的;
static 和 extern 型变量若未初始化,其值为0;
5.算术运算符中,%只能对整形运算量施加运算。在计算两个整数的余数时,余数的符号与被除数相同。
如:
3%(-2) = 1;
-3 % 2 = -1;
3 % 2 = 1;
-3 % (-2) = -1;
6.二维数组传送地址给一维指针时注意在数组名前加*,否则可能出现运算错误。
如:
int a[3][4] = {...}, *p;
p = a; /* TC 中不提示出错,只警告,但运行中可能出错*/
p = *a; /* 或用 p = a[0] 都正确 */
7.scanf()中,在%后有一个"*"附加说明符,表示跳过指定的列数。
如:scanf("%2d %*3d %2d", &a, &b); 输入 12 345 67. 则12赋给a,67赋给b。
8.每次调用printf()、scanf(),都将返回一个整数值,其大小等于输出输入的字符个数。(printf()返回输出所有字符个数,scanf()返回赋值了的地址个数。
如:n = scanf("a = %d, %d, %d", &a, &b, &c); n为3.
9.由于getchar()要求以回车键结束输入,因此如果两个getchar()顺序出现时,第一个getchar()要求作为结束标志的回车键将被第二个getchar()接收。同样,如果getchar()出现在scanf()后边时,也会接收scanf()要求结束输入的回车符。
10.转义字符为\后跟一个特定字符或八进制或十六进制的整数。[不能为十进制数]
例:下列属于C语言合法的字符常数的是____.
A) '\97' B)"A" C)'\t' D)"\0"
选C。A中97不是一个正确的八进制或十六进制数。
11.printf()中%x 和 %X 都用来输出十六进制数,差别是:若十六进制数中出现"abcdef"这些字母时,前者显示小写字母,后者显示大写字母。
12.定义数组时,TC中数组长度不超过65535(2^16-1),即定义a[65536]时会出错。
13.else 和 if 的配对关系(易错点)。当 if 没有卢它配对的其他 else 时,else 总是与离自己前面最近的 if 配对。
例:有如下程序
main() {
int a = 2, b = -1, c = 2;
if (a < b)
if (b < 0) c = 0;
else c++;
printf("%d\n", c);
该程序的输出结果是____ A) 0 B) 1 C) 2 D) 3 (选C)
14.switch后面的表达式 e 只能是字符型或整型,且必须放在圆括号中,各个case中也只能使用整型常量或整型常量表达式。且 case 与其后的表达式之间必须留有空格。case 中出现的字符常数会自动转换成整型。
15.用 "%s" 控制的 scanf() 及 gets() 函数和 printf() 及 put() 函数在输入输出字符串时要求地址项作输入输出项。对一维数组,数组名就是地址量,对二维数组,数组名连同第一个下标作为地址量。
如:ch[10][80] 则 printf("%s", ch[1]); 输出
16.printf() 函数在输出字符串时,遇'\0'字符时结束。无换行功能。而 puts() 函数遇'\0'字符时结束输出,并把'\0'字符自动转换成换行符。
如:str = "Good morning", 则 printf("%s%s", str, str); 输出为 Good morningGood morning
而 puts(str); puts(str); 输出为
Good morning
Good morning
17.类型转换中,浮点型数据转换为整型只能换为以下几种:
(unsigned)int; (unsigned)long; (unsigned)long long;
如:float f = 23456.789; short s = f; /* Error!*/
18.gets(char *) 函数可以读入带空格的字符串并存入一个字符数组中,区别于 scanf() 中用 %s 不能读取空格。
19.防止头文件被重复定义:
#ifndef __headerfileXXX__
#define __headerfileXXX__
...
文件内容
...
#endif
分享到:
相关推荐
文档中介绍了C语言在编写高质优效的程序时,需要注意到的若干细节问题。
针对于C语言里面的常用函数的用法和细节进行了归纳整理
c的变量的小细节,重点难点,ASCII码的换算,c语言是细节性语言需要我们打好基础,扎扎实实的学习和练习。
你必须知道的495个C语言问题(完整版 C 编程细节 C语言规范 C语言注意事项
用C语言做嵌入式软件开发要注意的一些细节
linux 常见的错误处理,c语言编程中的细节注意之处。
职场菜鸟需要注意的一些细节问题,一定会对你有所帮助!
C语言编程规范.pdf ,涵盖了常用C语言规范,C语言变量命名,函数命名,缩进风格等在编写代码时要注意各方面细节
C语言深度解剖,详解介绍了c语言需要注意的细节,学习c的一本很好的书
C语言重难点分析 需要注意的各个细节,基础的问题都有解答
学好C++编程语言需要注意的七大细节: 1. 掌握C语言的基础知识。C++是C语言的扩展,因此学好C++编程语言需要对C语言有扎实的基础知识。比如,要掌握数据类型、变量、表达式、循环、条件语句等基础知识。 2. 学会...
书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路。全书共分7章。 本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校...
关于c/c++函数中sizeof的使用,以及使用过程中的一下细节注意
C语言面试题,注意细节,常考内容,适合C语言提高的同学看
C、C++学习中应注意的一些小细节,及一些问题
C语言经典的495个常见问题,注意细节才能成功
书中499道习题均已解答,注释详细(包含拓展知识、注意细节、Clion详细教程),2021年12月8日对编程题3-3进行了修正
C语言的注意事项,文档里含各种使用C语言过程中可能遇到的问题与细节,非常有用,超经典~
C语言写法的重要性就体现在这了,注意其中的小细节,就应该没问题