《C语言解惑》—— 第1章 初涉C语言者的困惑

第1章 初涉C语言者的困惑

初学C语言首先要建立良好的习惯并克服最常见的错误。

1.1 中文字符以假乱真

不管是初学者还是有经验的程序员,都会碰到这个问题。这往往是在拼音状态下输入标点符号之类的字符造成的。假设语句

printf("%s","OK");

中的“,”号是中文字符,编译器会给出如下信息:

error C2018: unknown character '0xa3'
error C2018: unknown character '0xac'

注意:只要给出“0xa”的标识,就可断定该行存在中文字符。

只要稍微注意一下就可以避免这个错误。其实,多数的错误不是在输入程序时误输入,而是直接将Word文档里或网上的程序拷贝到源文件中造成的。一般是因为整理文档里的程序时,人为地使用中文字符或插入图形符号,例如&、[、] 、& 、# 、﹨等符号。
只要编译系统给出出错信息并定位到所在行,就很容易判断出错误。有点难度的是中文空格,这个空格一般有三种情况:一行的首、尾和其他位置。假设下面程序除第1行之外,其他行的首尾均有空格,看看这类错误的表现形式。

#include <stdio.h>
void main( )
{
         printf("%s\n","OK");   //打印输出
}

当编译给出第二行有错误的信息时,可以把鼠标光标放到第一行的尾部,按一下“↓”键,这时光标移到下一行并停在离“)”的一段距离处,这说明光标左边有中文空格。用Backspace键删除前面的空格,删到“)”处即可。如果将光标放在“#”处,按一下“↓”键,光标会停在离字母“v”的一段距离处,使用删除键删除右边的空格即可。
其他各行同样处理,对于第4行,如果“//”号的字体不是绿色的,说明注释语句之前有空格,注释不起作用,往左边删除,直到“//”号变为绿色。
需要注意的是,编译拷贝的程序时,可能会给出很多错误信息,而且可能给出的错误种类也很多。如果第1个错误就有“0xa”的标识,则一定要先解决它。有时解决它之后,其他的错误可能就没有了。

时间: 2024-09-23 12:48:16

《C语言解惑》—— 第1章 初涉C语言者的困惑的相关文章

《C语言解惑》—— 导读

前 言 C语言编程仍然是编程工作者必备的技能.目前有四类典型的学习C语言的教材:第一类是以讲授语法为主线,即流行的教科书方式,所涉及的例题均以正确的程序为主:第二类是以案例教学为主的教材,摆脱了语法的部分约束:第三类是以讲解编程技术为主的经验之作,主要针对已有编程基础的读者:第四类是针对编程容易产生错误的专题,对比正确与错误的程序以提高编程能力,涉及的内容比较专业.这些教材各有千秋,其共同的目的都是想教会读者如何编写正确.规范的程序.我们也曾在两部教材的每一章中尝试增加一节错误分析的内容,以期让

《C语言解惑》一第1章 操作符1.1 基本算术操作符

第1章 操作符 C语言解惑 C语言程序由语句构成,而语句由表达式构成,表达式又由操作符和操作数构成.C语言中的操作符非常丰富--本书的附录B所给出的操作符汇总表就是最好的证据.正是因为这种丰富性,为操作符确定操作数的规则就成为了我们理解C语言表达式的核心和关键.那些规则--即所谓的"优先级"和"关联性"--汇总在本书附录A的操作符优先级表里.请使用该表格来解答本章中的谜题. 谜题1.1 基本算术操作符 请问,下面这个程序的输出是什么? main() { int x;

《C语言解惑》一导读

前言 C语言解惑 C语言并不大--如果以参考手册的篇幅作为衡量标准的话,C语言甚至可以归为一种"小"语言.不过,这种"小"并不意味着C语言的功能不够强大,而是说明了C语言里的限制性规则比较少.C语言本身的设计非常简洁精妙,这一点相信C语言的使用者早已有所体会. 不过,C语言的这种精妙对C语言的初学者来说,似乎是故作神秘.因为限制较少,C语言可以写成内容丰富的表达式,这可能会被初学者认为是输出错误.C语言的紧凑性允许以简洁凝炼的方式实现常见的编程任务. 学用C语言的过

java-Java语言程序设计第4章编程练习题1求问

问题描述 Java语言程序设计第4章编程练习题1求问 import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner input = new Scanner(System.in); int data = 0; int positive = 0; int negative = 0; int sum = 0; int count = 0; System.out.pri

《C语言解惑》—— 第2章 用好printf和scanf一对活宝

第2章 用好printf和scanf一对活宝学习C语言首先碰到的是输入和输出函数,这一对函数定义在头文件stdio.h中.

《C语言解惑》—— 第3章 基本数据类型

第3章 基本数据类型应该说,基本数据类型用得最多,所以要正确掌握基本数据类型的使用方法.

C语言学习教程第九章-预处理(4)

2. 第二种形式: #ifndef 标识符 程序段1 #else 程序段2 #endif 与第一种形式的区别是将"ifdef"改为"ifndef".它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译, 否则对程序段2进行编译.这与第一种形式的功能正相反. 3. 第三种形式: #if 常量表达式 程序段1 #else 程序段2 #endif 它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译.因此可以使程序在不

C语言学习教程第九章-预处理(1)

预处理 概述在前面各章中,已多次使用过以"#"号开头的预处理命令.如包含命令# include,宏定义命令# define等.在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分. 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理是C语言的一个重要功能, 它由预处理程序负责完成.当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译. C语言提供了多种预处理功能,如

《C语言解惑》一1.4 二进制位操作符

谜题1.4 二进制位操作符 请问,下面这个程序的输出是什么? define PRINT(int) printf(#int " = %d\n", int) main() { int x, y, z; x = 03; y = 02; z = 01; PRINT( x | Y & z ); (1.4.1) PRINT( x | y & ~ z ); (1.4.2) PRINT( x ^ y & ~ z ); (1.4.3) PRINT( x & y &