`
mycream
  • 浏览: 55443 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C细节注意

阅读更多

大一学习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语言十大细节问题!

    - **初始印象**:使用`UL`表示应试者对细节有一定的注意和理解。 #### 2. 定义宏`MIN`以返回两个参数中的较小值 正确的宏定义如下: ```c #define MIN(A, B) ((A) (B) ? (A) : (B)) ``` **解析:** - **宏定义...

    C语言注意事项.

    ### C语言注意事项详解 在深入探讨C语言的注意事项之前,我们先来理解一下C语言的基本概念。C语言是一种结构化编程语言,...在实际编码过程中,应注重细节,合理运用C语言的各种特性和结构,以提高代码的质量和性能。

    C语言模块化设计注意的地方

    本文将基于提供的文件信息,详细阐述在C语言中进行模块化设计时应注意的关键知识点。 #### 一、头文件的作用与规范 头文件(通常以`.h`为后缀)在C语言模块化设计中扮演着至关重要的角色。它们主要用来声明函数...

    做程序员需要注意的细节

    10. **持续集成/持续部署(CI/CD)**:自动化构建、测试和部署流程,确保每次代码变更都能快速验证其正确性,降低集成风险。 11. **设计模式**:了解并适时应用设计模式,如工厂模式、单例模式、观察者模式等,可以...

    使用stl 注意细节

    STL 使用注意细节 STL(Standard Template Library)是 C++ 编程语言中的一个标准库,提供了许多有用的容器、算法和迭代器,帮助开发者快速构建高效、可靠的程序。然而,使用 STL 需要注意一些细节,以避免常见的...

    C语言缺陷与缺陷----C语言编程注意事项

    以上只是C语言编程中的一些常见陷阱和注意事项,实际上还有更多细节需要注意,例如内存管理、数组边界、指针操作等。在编写C代码时,对这些陷阱保持警惕,使用良好的编程习惯和充分的测试,可以避免许多潜在问题。

    C语言中关于if语句中的小细节

    总结起来,if语句在C语言中的应用虽然看似简单,但需要注意的细节有很多。使用布尔变量时应避免与0或1直接比较,使用浮点数时应采用精度比较而不是简单的等值比较,指针比较时应使用NULL而非0,以及在编写比较语句时...

    AC690N系列开发细节注意点.pdf

    在分析AC690N系列的开发细节时,首先需要注意的是在遇到初始编译失败的问题时,解决方案可能是修改isd_tools.cfg文件中的FLASHID参数为e04015。这表明开发环境的配置对项目的顺利进行有着至关重要的作用。开发者在...

    C语言编程注意点(关键点).doc

    在C语言编程中,有多个关键点需要注意,这些细节对于理解和编写有效的代码至关重要。以下是针对C语言编程的一些重要知识点: 1. **变量的作用域**:在C语言中,变量的作用域指的是变量在程序中的可见范围。`main()`...

    C语言CHM参考手册.rar

    对于有一定经验的开发者,可以帮助深入理解C语言的细节和提高编程效率。通过阅读和实践,不仅可以掌握C语言的基础知识,还能提升问题解决能力和程序设计思维。在学习过程中,结合实际项目练习,将理论知识应用到实践...

    C编程小细节

    在C语言编程中,有很多细节需要注意,这些细节往往会影响程序的正确性和效率。以下是一些关键点的详细说明: 1. **for循环的灵活性**:for循环的三部分——初始化、条件检查和更新,都可以被省略。例如,`for(int i...

    C函数查寻 C函数 C语言 函数查寻工具

    在编程过程中,经常需要查阅函数的用法和细节,这时就需要借助专门的C函数查寻工具。 一种常见的C函数查寻工具有在线文档,如C语言参考手册(C++ Reference)和 cdecl.org。这些网站提供了详尽的C标准库函数文档,...

    Notes On Writing Portable Programs In C(用C语言编写可移植程序的注意事项)

    例如,关于变量名长度的限制、结构体成员数量的限制等,这些都是在实际编程过程中需要注意的细节问题。 - **变量名长度**:根据C89标准,内部标识符的最大长度为31个字符,而外部标识符的最大长度为6个字符;而在...

    qt调用c语言代码(c语言的代码写在c++中)

    9. **封装C语言API**:为了简化C++代码,可以创建C++类来封装C语言的API,隐藏细节并提供更友好的接口。 10. **Qt Creator中的调试**:在Qt Creator中,可以设置调试配置来同时调试C++和C代码,这对于查找跨语言...

    c语言嵌入式编程注意事项.doc

    综上所述,C语言嵌入式编程不仅涉及技术细节,还涉及到系统设计原则和实践策略。理解并掌握这些注意事项,能帮助开发者编写出高效、可靠且适应性强的嵌入式软件。在实际开发中,不断积累经验,解决实际问题,是提升...

    javascipt基础内容–需要注意的细节

    javascipt-基础—细节需要注意的地方: 1、特殊数值:NaN、Infinity、isNaN()、isFinite() NaN: 代码如下:var a=parseInt(‘a123’);window.alert&#40;a&#41;; //输出NaN Infinity: 代码如下:window.alert&#40;6/0...

    MSP430的C语言编写注意事项

    MSP430单片机C语言编程需要注意许多细节,包括变量定义、数据类型选择、浮点数运算、变量分配、局部变量与全局变量、函数调用等方面。在编程时,需要遵循这些注意事项,以提高编程效率和代码质量。

    C语言调用C++类中的方法

    要注意的是,这种方法只适用于C++类的静态成员函数,因为非静态成员函数有隐含的`this`指针,这是C语言不具备的。若要调用非静态成员函数,需要在C++端创建一个全局对象或者传递一个对象实例到C语言接口。 此外,还...

    一份涵盖大部分学习 C 语言所需要掌握的核心知识,致力于打造最易懂的 C语言入门教程,让天下没有难学的 C语言

    printf函数Scanf函数putchar和getcharC语言运算符大全解阶段练习入门流程控制基本概念选择结构循环结构四大跳转循环的嵌套图形打印函数那点事main函数分析递归函数(了解)进制基本概念进制转换原码反码补码位运算符...

    c语言核心技术(C in a Nutsbell)

    - **快速入门**:这部分类似于经典的《Kernighan & Ritchie C语言程序设计语言》(简称K&R),但更注重C语言的具体细节和现代应用。读者将学习到: - **数值常量**:介绍不同类型的数值表示方法及其特点。 - **类型...

Global site tag (gtag.js) - Google Analytics