c语言常见错误

第一篇:c语言常见错误

       1.= 不等于 ==

       从 Algol 派生出来的语言,如 Pascal 和 Ada,用 := 表示赋值而用 = 表示比较。而 C 语言则是用 = 表示赋值而用 == 表示比较。这是因为赋值的频率要高于比较,因此为其分配更短的符号。此外,C 可以多重赋值(如 a = b = c),并且可以将赋值嵌入到一个大的表达式或者语句中。这种便捷导致了一个潜在的问题:需要用比较的地方却写成了赋值。下面的语句看起来好像是要检查 x 是否等于 y :

       if(x = y)

       foo();

       而实际上是将 y 的值赋值给 x,并检查结果是否非零。再看看下面的一个希望跳过空格、制表符和换行符的循环:

       while(c == ’ ’ || c = ’t’ || c == ’n’)

       c = getc(f);

       在应该与 ’t’ 进行比较的地方程序员错误地使用了 =,而不是==。这个“比较”实际上是将’t’ 赋给 c,然后判断 c 的(新的)值是否为零。因为 ’t’ 不为零,所以这个“比较”一直为真,因此这是一个死循环。

       一些编译器会对形如 e1 = e2 的条件给出一个警告以提醒用户。当你确实需要对一个变量进行赋值,然后再检查变量是否“非零”时,为了避免这种警告信息,应显式给出比较符。也就是将:

       if(x = y)

       foo();改写为:

       if((x = y)!= 0)

       foo();

       2.多字符符号

       一些 C 符号,如 /、* 或 =,只有一个字符。还有些 C 符号,如 /*、== 或标识符,具有多个字符。当编译器遇到紧连在一起的 / 和 * 时,它必须决定是将这两个字符识别为两个符号还是一个单独的符号。C 语言标准规定:“如果一个字符被识别为符号,则应该包含下一个字符看看包含此字符后构成的字符串是否仍然可以构成符号,如果可以则继续包含下一个字符,一直到不能构成符号为止。”。因此,如果 / 是符号的第一个字符,并且 / 后面紧随着一个 *,则这两个字符构成解释符开始标记。下面的语句看起来像是将 y 的值设置为 x 的值除以 p 所指向的值:

       y = x/*p

       /* p 指向除数 */;

       实际上,因为 /* 是解释符开始标记,因此编译器会简单地“吞噬”程序文本,直到 */ 出现为止。换句话说,这条语句仅仅把 y 的值设置为 x 的值,而根本没有看到 p。我们应该将这条语句改为:

       y = x / *p

       /* p 指向除数 */;或者:

       y = x /(*p)

       /* p指向除数 */;

       3.else 问题

       考虑下面的程序片断:

       if(x == 0)

       if(y == 0)

       error();

       else {

       z = x

       y;

       f(&z);

       }

       写这段程序的程序员的目的明显是想将情况分为两种:x == 0 和x!= 0。在第一种情况中,如果 y == 0,则调用 error()。第二种情况中,程序执行 z = x

       y;和 f(&z)。

       然而,这段程序的实际效果却大为不同。其原因是 else 总是与离它最近的 if 相关联。上面那段代码其实等价于:

       if(x == 0){

       if(y == 0)

       error();

       else {

       z = x

       y;

       f(&z);

       }

       }

       也就是说,当 x!= 0 发生时什么也不做。如果要达到我们想要的效果,应该改成:

       if(x == 0){

       if(y == 0)

       error();

       } else {

       z = z

       y;

       f(&z);

       }

       4.表达式求值顺序

       一些运算符以一种已知的、特定的顺序对其操作数进行求值。但另一些则不是。例如下面的表达式:

       a

       5.&&、|| 和!运算符

       C 规定 0 代表“假”,非零代表“真”。这些运算符返回 1 表示“真”而返回 0 表示“假”。&& 和 || 运算符如果可以通过左边的操作数确定整个表达式的真假性,就不会对右边的操作数进行求值。!10 返回 0,因为 10 非零;10 && 12 返回 1,因为 10 和 12 的值都不是 0;10 || 12 也是 1,因为 10 非零。这个表达式中的 12 不会被求值,因为左边的 10 就足够确定整个表达式为真。同理 :10 || f()中的 f()也不会被求值。

       6.下标从零开始

       C 语言中,一个具有 n 个元素的数组中没有下标为 n 的元素,元素的下标是从 0 到n-1。下面的程序可能会崩溃:

       int i, a[10];

       for(i = 1;i

       7.getchar 函数的返回值为整型(int)

       请看以下程序:

       #include

       int main(void)

       {

       char c;

       while((c = getchar())!= EOF)

       putchar(c);

       return 0;

       }

       这段代码存在一个小小的,但已经足以致命的错误:c 被声明为字符型(char)而不是整型。这意味着 c 可能不能正确接收 EOF,从而导致程序不能退出!正确的写法是:将 char 改成int。

第二篇:C语言常见错误小结(定稿)

       c语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。

       1.书写标识符时,忽略了大小写字母的区别。

       main(){

       int a=5;

       printf(“%d”,A);}

       编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

       2.忽略了变量的类型,进行了不合法的运算。

       main(){

       float a,b;

       printf(“%d”,a%b);}

       %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不答应进行“求余”运算。

       3.将字符常量与字符串常量混淆。

       char c;c=“a”;

       在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘',而把它赋给一个字符变量是不行的。

       4.忽略了“=”与“= =”的区别。

       在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写

       if(a=3)then „

       但C语言中,“=”是赋值运算符,“==”是关系运算符。如:

       if(a==3)a=b;

       前者是进行比较,a是否和3相等,后者表示假如a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

       5.忘记加分号。

       分号是C语句中不可缺少的一部分,语句末尾必须有分号。

       a=1 b=2

       编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

       { z=x y;t=z/100;printf(“%f”,t);}

       对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。

       6.多加分号。

       对于一个复合语句,如:

       { z=x y;t=z/100;

       printf(“%f”,t);};

       复合语句的花括号后不应再加分号,否则将会画蛇添足。

       又如:

       if(a%3==0);I ;

       本是假如3整除a,则I加1。但由于if(a%3==0)后多加了分号,则if语句到此结束,程序将执行I 语句,不论3是否整除a,I都将自动加1。

       再如:

       for(I=0;I<5;I );{scanf(“%d”,&x);printf(“%d”,x);}

       本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。

       7.输入变量时忘记加地址运算符“&”。

       int a,b;

       scanf(“%d%d”,a,b);

       这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。

       8.输入数据的方式与要求不符。

       ①scanf(“%d%d”,&a,&b);

       输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

       3,4

       输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。

       ②scanf(“%d,%d”,&a,&b);

       C规定:假如在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:

       3,4

       此时不用逗号而用空格或其它字符是不对的。4 3:4

       又如:

       scanf(“a=%d,b=%d”,&a,&b);输入应如以下形式:

       a=3,b=4

       9.输入字符的格式与要求不一致。

       在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

       scanf(“%c%c%c”,&c1,&c2,&c3);如输入a b c

       字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

       10.输入输出的数据类型与所用格式说明符不一致。

       例如,a已定义为整型,b定义为实型

       a=3;b=4.5;

       printf(“%f%dn”,a,b);

       编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注重。

       11.输入数据时,企图规定精度。

       scanf(“%7.2f”,&a);

       这样做是不合法的,输入数据时不能规定精度。

       12.switch语句中漏写break语句。

       例如:根据考试成绩的等级打印出百分制数段。

       switch(grade)

       { case 'A':printf(“85~100n”);case 'B':printf(“70~84n”);case 'C':printf(“60~69n”);case 'D':printf(“<60n”);default:printf(“errorn”);

       由于漏写了break语句,case只起标号的作用,而不起判定作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如

       case 'A':printf(“85~100n”);break;

       13.忽视了while和do-while语句在细节上的区别。

       (1)main(){int a=0,I;

       scanf(“%d”,&I);while(I<=10){a=a I;I ;}

       printf(“%d”,a);}

       (2)main(){int a=0,I;

       scanf(“%d”,&I);do

       {a=a I;I ;

       }while(I<=10);printf(“%d”,a);}

       可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I>10时,二者结果就不同了。因为while循环是先判定后执行,而do-while循环是先执行后判定。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。

       14.定义数组时误用变量。

       int n;

       scanf(“%d”,&n);int a[n];

       数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不答应对数组的大小作动态定义。

       15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。

       m ain()

       {static int a[10]={1,2,3,4,5,6,7,8,9,10};printf(“%d”,a[10]);}

       C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。

       16.初始化数组时,未使用静态存储。

       int a[3]={0,1,2};

       这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:

       static int a[3]={0,1,2};

       17.在不应加地址运算符&的位置加了地址运算符。

       scanf(“%s”,&str);

       C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:

       scanf(“%s”,str);

       18.同时定义了形参和函数中的局部变量。

       int max(x,y)int x,y,z;{z=x>y?x:y;return(z);}

       形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:

       int max(x,y)int x,y;{int z;

       z=x>y?x:y;return(z);}

       附录:出错信息解释

       Ambiguous operators need parentheses 不明确的运算需要用括号括起

       Ambiguous symbol 'xxx' 不明确的符号

       Argument list syntax error 参数表语法错误

       Array bounds missing 丢失数组界限符

       Array size toolarge 数组尺寸太大

       Bad character in paramenters 参数中有不适当的字符

       Bad file name format in include directive 包含命令中文件名格式不正确

       Bad ifdef directive synatax 编译预处理ifdef有语法错

       Bad undef directive syntax 编译预处理undef有语法错

       Bit field too large 位字段太长

       Call of non-function 调用未定义的函数

       Call to function with no prototype 调用函数时没有函数的说明

       Cannot modify a const object 不允许修改常量对象

       Case outside of switch 漏掉了case 语句

       Case syntax error Case 语法错误

       Code has no effect

       代码不可述不可能执行到

       Compound statement missing{ 分程序漏掉“{”

       Conflicting type modifiers 不明确的类型说明符

       Constant expression required 要求常量表达式

       Constant out of range in comparison 在比较中常量超出范围

       Conversion may lose significant digits 转换时会丢失意义的数字

       Conversion of near pointer not allowed 不允许转换近指针

       Could not find file 'xxx' 找不到XXX文件

       Declaration missing;说明缺少“;”

       Declaration syntax error 说明中出现语法错误

       Default outside of switch

       Default 出现在switch语句之外

       Define directive needs an identifier 定义编译预处理需要标识符

       Division by zero 用零作除数

       Do statement must have while Do-while语句中缺少while部分

       Enum syntax error 枚举类型语法错误

       Enumeration constant syntax error 枚举常数语法错误

       Error directive :xxx

       错误的编译预处理命令

       Error writing output file 写输出文件错误

       Expression syntax error 表达式语法错误

       Extra parameter in call 调用时出现多余错误

       File name too long 文件名太长

       Function call missing)函数调用缺少右括号

       Fuction definition out of place 函数定义位置错误

       Fuction should return a value 函数必需返回一个值

       Goto statement missing label Goto语句没有标号

       Hexadecimal or octal constant too large 16进制或8进制常数太大

       Illegal character 'x' 非法字符x

       Illegal initialization 非法的初始化

       Illegal octal digit 非法的8进制数字

       Illegal pointer subtraction 非法的指针相减

       Illegal structure operation 非法的结构体操作

       Illegal use of floating point 非法的浮点运算

       Illegal use of pointer 指针使用非法

       Improper use of a typedefsymbol 类型定义符号使用不恰当

       In-line assembly not allowed 不允许使用行间汇编

       Incompatible storage class 存储类别不相容

       Incompatible type conversion 不相容的类型转换

       Incorrect number format 错误的数据格式

       Incorrect use of default Default使用不当

       Invalid indirection 无效的间接运算

       Invalid pointer addition 指针相加无效

       Irreducible expression tree 无法执行的表达式运算

       Lvalue required

       需要逻辑值0或非0值

       Macro argument syntax error 宏参数语法错误

       Macro expansion too long 宏的扩展以后太长

       Mismatched number of parameters in definition 定义中参数个数不匹配

       Misplaced break

       此处不应出现break语句

       Misplaced continue

       此处不应出现continue语句

       Misplaced decimal point 此处不应出现小数点

       Misplaced elif directive 不应编译预处理elif Misplaced else 此处不应出现else Misplaced else directive

       此处不应出现编译预处理else Misplaced endif directive

       此处不应出现编译预处理endif Must be addressable 必须是可以编址的

       Must take address of memory location 必须存储定位的地址

       No declaration for function 'xxx' 没有函数xxx的说明

       No stack 缺少堆栈

       No type information 没有类型信息

       Non-portable pointer assignment 不可移动的指针(地址常数)赋值

       Non-portable pointer comparison 不可移动的指针(地址常数)比较

       Non-portable pointer conversion 不可移动的指针(地址常数)转换

       Not a valid expression format type 不合法的表达式格式

       Not an allowed type 不允许使用的类型

       Numeric constant too large 数值常太大

       Out of memory 内存不够用

       Parameter 'xxx' is never used 能数xxx没有用到

       Pointer required on left side of-> 符号->的左边必须是指针

       Possible use of 'xxx' before definition 在定义之前就使用了xxx(警告)

       Possibly incorrect assignment 赋值可能不正确

       Redeclaration of 'xxx' 重复定义了xxx

       Redefinition of 'xxx' is not identical xxx的两次定义不一致

       Register allocation failure 寄存器定址失败

       Repeat count needs an lvalue 重复计数需要逻辑值

       Size of structure or array not known 结构体或数给大小不确定

       Statement missing;语句后缺少“;”

       Structure or union syntax error 结构体或联合体语法错误

       Structure size too large 结构体尺寸太大

       Sub scripting missing ] 下标缺少右方括号

       Superfluous & with function or array 函数或数组中有多余的“&” Suspicious pointer conversion 可疑的指针转换

       Symbol limit exceeded 符号超限

       Too few parameters in call

       函数调用时的实参少于函数的参数不

       Too many default cases

       Default太多(switch语句中一个)Too many error or warning messages 错误或警告信息太多

       Too many type in declaration 说明中类型太多

       Too much auto memory in function 函数用到的局部存储太多

       Too much global data defined in file 文件中全局数据太多

       Two consecutive dots 两个连续的句点

       Type mismatch in parameter xxx 参数xxx类型不匹配

       Type mismatch in redeclaration of 'xxx' xxx重定义的类型不匹配

       Unable to create output file 'xxx' 无法建立输出文件xxx

       Unable to open include file 'xxx' 无法打开被包含的文件xxx Unable to open input file 'xxx' 无法打开输入文件xxx Undefined label 'xxx' 没有定义的标号xxx Undefined structure 'xxx' 没有定义的结构xxx Undefined symbol 'xxx' 没有定义的符号xxx

       Unexpected end of file in comment started on line xxx 从xxx行开始的注解尚未结束文件不能结束

       Unexpected end of file in conditional started on line xxx 从xxx 开始的条件语句尚未结束文件不能结束

       Unknown assemble instruction 未知的汇编结构

       Unknown option 未知的操作

       Unknown preprocessor directive: 'xxx' 不认识的预处理命令xxx Unreachable code 无路可达的代码

       Unterminated string or character constant 字符串缺少引号

       User break

       用户强行中断了程序

       Void functions may not return a value Void类型的函数不应有返回值

       Wrong number of arguments 调用函数的参数数目错

       'xxx' not an argument xxx不是参数

       'xxx' not part of structure xxx不是结构体的一部分

       xxx statement missing(xxx语句缺少左括号

       xxx statement missing)xxx语句缺少右括号

       xxx statement missing;xxx缺少分号

       xxx' declared but never used 说明了xxx但没有使用

       xxx' is assigned a value which is never used 给xxx赋了值但未用过

       Zero length structure 结构体的长度为零

第三篇:C语言常见错误小结

       C语言常见错误小结-C/C / C语言

       C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语 言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带 来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误

       。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错

       误,写给各位学员以供参考。

       1.书写标识符时,忽略了大小写字母的区别。main(){ int a=5;printf(“%d ”,A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是

       两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

       2.忽略了变量的类型,进行了不合法的运算。main(){ float a,b;printf(“%d ”,a%b);} %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许

       进行“求余”运算。

       3.将字符常量与字符串常量混淆。char c;c= “a ”;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字 符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统 自动加上的,所以字符串“a”实际上包含两个字符:„a '和„ ',而把它赋给一个字符变 量是不行的。

       4.忽略了“=”与“==”的区别。

       在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中 可以写

       if(a=3)then …

       但C语言中,“=”是赋值运算符,“==”是关系运算符。如: if(a==3)a=b;

       前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

       5.忘记加分号。

       分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一

       部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看 一下上一行是否漏掉了分号。{ z=x y;t=z/100;printf(“%f ”,t);} 对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL 不同的)。

       6.多加分号。

       对于一个复合语句,如: { z=x y;t=z/100;printf(“%f ”,t);};复合语句的花括号后不应再加分号,否则将会画蛇添足。又如:

       if(a%3==0);I ;本是如果3整除a,则I加1。但由于if(a%3==0)后多加了分号,则if语句到此结束,程序将

       执行I 语句,不论3是否整除a,I都将自动加1。再如:

       for(I=0;I <5;I );{scanf(“%d ”,&x);printf(“%d ”,x);} 本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循 环体变为空语句,此时只能输入一个数并输出它。

       7.输入变量时忘记加地址运算符“&”。int a,b;scanf(“%d%d ”,a,b);这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指 a在内存中的地址。

       8.输入数据的方式与要求不符。①scanf(“%d%d ”,&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4

       输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。②scanf(“%d,%d ”,&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应 输入与这些字符相同的字符。下面输入是合法的: 3,4

       此时不用逗号而用空格或其它字符是不对的。3 4 3:4 又如:

       scanf(“a=%d,b=%d ”,&a,&b);输入应如以下形式: a=3,b=4

       9.输入字符的格式与要求不一致。

       在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf(“%c%c%c ”,&c1,&c2,&c3);如输入a b c

       字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后 面不需要用空格作为两个字符的间隔。

       10.输入输出的数据类型与所用格式说明符不一致。例如,a已定义为整型,b定义为实型 a=3;b=4.5;printf(“%f%dn ”,a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。

       11.输入数据时,企图规定精度。scanf(“%7.2f ”,&a);这样做是不合法的,输入数据时不能规定精度。

       12.switch语句中漏写break语句。

       例如:根据考试成绩的等级打印出百分制数段。switch(grade){ case 'A ':printf(“85~100n ”);case 'B ':printf(“70~84n ”);case 'C ':printf(“60~69n ”);case 'D ':printf(“ <60n ”);default:printf(“errorn ”);由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写 法应在每个分支后再加上“break;”。例如

       case 'A ':printf(“85~100n ”);break;

       13.忽视了while和do-while语句在细节上的区别。(1)main(){int a=0,I;scanf(“%d ”,&I);while(I <=10){a=a I;I ;} printf(“%d ”,a);}(2)main(){int a=0,I;scanf(“%d ”,&I);do {a=a I;I ;}while(I <=10);printf(“%d ”,a);} 可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I> 10时,二者结果就

       不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的

       数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。

       14.定义数组时误用变量。int n;scanf(“%d ”,&n);int a[n];数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的

       大小作动态定义。

       15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。main(){static int a[10]={1,2,3,4,5,6,7,8,9,10};printf(“%d ”,a[10]);} C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[ 10]是不存在的。

       16.在不应加地址运算符&的位置加了地址运算符。scanf(“%s ”,&str);C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入 项是字符数组名,不必要再加地址符&。应改为:scanf(“%s ”,str);

       17.同时定义了形参和函数中的局部变量。int max(x,y)int x,y,z;{z=x> y?x:y;return(z);} 形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为: int max(x,y)int x,y;{int z;z=x> y?x:y;return(z);}

第四篇:常见行文错误

       一、行文中的常见错误

       1、滥发文件。主要表现:(1)所发公文属可发可不发之列;(2)所发公文只是照抄照转上级的公文(翻印即可,不必转发);(3)所发公文内容空洞,无具体措施,不解决问题;(4)行文所涉及的问题可用口头请示、汇报或开会等形式解决;(5)行文所涉及的内容已在报上全文公布过;(6)在部门之间意见分歧,未经协商取得一致时就行文。

       2、行文关系混乱。主要表现:(1)应该党政分开行文的未分开行文;(2)应该一个机关单独行文的搞成几个机关联合行文;(3)该职能部门行文的“升格”为领导机关行文;(4)该领导机关行文的“降格”为职能部门行文。

       二、文种使用中的常见错误

       1、自制文种。在正式文种之外,随心所欲,生造公文文种并俨然以正式公文行文。常见的有:“请示报告”、“工作思路”、“情况”、“汇报”、“申请”、“郑重声明”等。

       2、误用文种。把属于机关其他应用文,特别是事务文书中的文种,误作为正式公文文种使用的情况。常见的有:把计划类文种“要点”、“打算”、“安排”、“设想”等作为公文文种直接使用,如《××市委××××年工作要点》。把属于总结类的文种“小结”、“总结”,以及把属于规章制度类的文种“办法”、“规程”、“须知”、“实施细则”等作为正式文种直接使用。但是,如果将上述应用文用转发或印发通知的形式发布,则是规范用法。如“××市人民政府关于印发市政府1997年工作要点的通知”。

       3、混用文种。不按文种的功能和适用范围去选用文种,而造成临近文种相互混用,导致行文关系不清,行文目的不明,行文性质混淆。常见的有:“公告”与“通知”、“决议”与“决定”、“请示”与“报告”、“请示”与“函”混用。主要表现为将通告误用为通知,将通知误用为通告,将请示误用为报告,将报告误用为请示,将“请示”、“报告”合用为“请示报告”,“请示”和“报告”本身是两个文种,将决定误用为决议,将决议误用为决定,将函误用为请示或报告,将复函误用为批复。

       4、越权使用文种。超出本机关的权限行文,如随意制定“条例”。实际上“条例”只能用于党的中央组织制定规范党组织的工作、活动和党员行为的规章制度;按照国务院办公厅发布的《行政规范制定程序暂行条例》的规定,在行政机关公文中,“条例”只能应用于特定国家机关制定的法规中,即全国人大常委会制定的法规,国务院制定的行政法规,地方人大及其常委会制定或通过(批准)的地方性法规。如:《中华人民共和国城市道路管理条例》。基层单位制定有关规章制度时可用“规定”或者用“细则”、“办法”等应用文种,并用转发或印发通知的形式发布。

       5、降格使用文种。应该用命令、指示发布的公文而用通知发布,如一些省、自治区、直辖市人民政府发布重要行政规章,不是用令发布而用通知发布。这种降格使用,必然影响行文的权威和效力。

       三、版头使用中的常见错误

       1、版头混用。将下行文版头用于上行文;使用“××文件”式样的版头用于向上级报告、请示工作、任免干部或批复等;使用不带“文件”字样的版头用于发布党的方针、政策,重要工作部署或批转下级的重要报告、请示。

       2、使用非标准版头。使用设计或印刷不标准的版头。常见的是:格式不对、尺寸不标准、非红色印刷、发文机关字体不庄重等。

       3、使用没有版头的白纸印发文件

       四、发文字号中的常见错误

       1、年号不全。如:将“1997”省略为“97”。

       2、括弧不对。《国家机关公文格式》规定发文用方括弧“[]”括入。错用成圆括弧“()”、六角括弧“〔〕”、方头括弧“【】”。

       3、位置不当。将发文位置提前到了机关代字前面。如:将×校字[1997]第×号错为[1997]×校字第×号。

       4、序号累赘。发文顺序号中多加了“0”变成“0×”。

       5、一文多字号。联合发文时并用了几个单位的发文字号。

       6、一字号多文。用同一发文字号制作两份不同的文件。

       7、跳号。没有按自然数的顺序依次排列,中间出现跳号现象。

       8、字第搭配不当。正确的是“字”在年号之前,“第”在年号之后;前面用“字”,后面用“第”;前面无“字”,后面就不应有“第”。常见的错误是:有“字”无“第”或有“第”无“字”。但“字”、“第”均省去是正确用法,如:×委[1997] ×号。

       9、滥用“发”字。只有重要文件才采用“××发”字样。

       10、自制发文字号。未按规定要求编制发文字号。

       五、签发人标注中的常见错误

       1、上行文未标注签发人姓名

       2、下行文也标注了签发人姓名

       3、标注不规范签发人标注位置远离发文字号(正确的是它们之间空两个字);签发人标注的字体字号与发文字号的字体字号不一致;“签发人”与签发者姓名之间未加冒号。

       六、公文标题中的常见错误

       1、缺少发文机关或通过决议、决定的会议名称“决议”、“决定”等文种的标题不能省略发文机关或通过决议、决定的会议名称。如:“第八届全国人民代表大会第五次会议关于批准设立重庆直辖市的决定”不能简写为“关于批准设立重庆直辖市的决定”。

       2、用发文字号代替文件名称如:“关于××字〔1997〕第×号文的批复”,这类标题的事由,除极少数熟悉标题中所述文件的内容的人外,其他人是不能明白的。

       3、文字累赘如:《××××人民政府关于认真贯彻落实×政发[××××]××号文件精神,积极动员群众大力开展抗旱播种保苗,保证今年农业夺取丰收的情况的报告》,发文机关可省略,所引文件的发文字号应删掉,事由可概括,改为《关于春耕播种情况的报告》就简明了。此外,在标题中常出现文字或词义重复的现象,如《关于贯彻××××通知的通知的通知》,应为《关于贯彻××××通知的通知》;又如《关于请求解决××××的请示》,应为《关于解决××××的请示》,后面有请示,前面用请求就是多余的。

       4、滥用标点符号除批转法规性文件外,公文标题中一般不加书名号。常见非法规、规章名称用了书名号,如《关于认真贯彻〈×××决定〉的通知》、《关于批转〈××××报告〉的通知》、《关于〈××××请示〉的批复》,标题中加书名号是错的。

       5、缺少文种如《××市人民政府批转市教委关于建立高等院校学习基地的报告》,误把被转发部门的“报告”当作本公文的文种,应在其后补上“通知”这一文种。另外,在公布事项、工作要点的公文中也常缺少文种,如:《××大学一九九×年重点抓的八件实事》就缺少“决定”这一文种。

       6、发文机关简称不规范如:《××市计委二〇〇×年工作计划》,“计委”容易引起歧义,如果是“计划经济委员会”应简称为“计经委”,如果是“计划生育委员会”应简称为“计生委”。

       七、主送机关中的常见错误

       1、缺主送机关除公布性文件外,一般文件都必须标明主送机关。但有的文种如会议纪要等,主送机关一般放在文尾末页下端。

       2、主送机关表述不规范未按党委、人大、政府、政协、法院、检察院、军队、有关部门的顺序排列;未用全称或规范化简称,如“市府”应为“××市人民政府”;分类排列时未按类内用顿号、类间用逗号的原则办理;随意使用统称,如“市内各单位”。

       3、多头主送主送机关不止一个。向上级机关行文,只写一个主送机关,如需同时送其他机关,应当用抄送的形式,但不得同时抄送下级机关。

       4、主送个人公文不得主送领导者个人。

       5、越级主送一般不得越级请示,特别情况下必须越级请示时,应当抄送被越过的机关。

       八、正文中的常见错误

       1、错别字主要表现:(1)因粗心大意,将“宏观”错成“客观”,“拨款”错成“拔款”,“突击”错成“突出”„„;(2)因辨析不准,将“淡薄”错成“淡簿”,“渎职”错成“赎职”,“严厉”错成“严励”„„

       2、标点符号错误常见顿号与逗号混用,逗号与句号混用,方括号与六角括号混用,书名号与引号混用„„

       3、数字使用不规范应该用阿拉伯数字的用了汉字,如“20世纪90年代”错成“二十世纪九十年代”;应该用汉字的用了阿拉伯数字,如“党的十四大”错成“党的14大”。正文中的数字,部分结构层次数和词、词组、惯用语、缩略语、具有修辞色彩语句中作为词素的数字必须用汉字书写,其余的应当使用阿拉伯数字。

       4、随意简称如将“社会主义精神文明建设”简称为“社精文建设”,“高速公路公司”简称为“高速公司”。

       5、引文标注错误未按所引用公文的发文时间、标题的发文字号的顺序引用。如“你校×校字[1997]第×号文件(关于×××的请示)收悉。”

       6、随意使用字体字号正确的是使用3号或4号仿宋体。

       7、随意设定字距行距正确的字距为0点距(电脑打字点距下同);行距为24点距。

       九、无正文说明标识中的常见错误

       常见错误是落款和发文时间已正好排满一页,而在另一页的文尾部分的抄送机关等之上标明“此页无正文”。这种情况无须注明“此页无正文”,因为公文的正文是指主送机关以下,生效标识以上具体反映公文内容的部分。

       十、附件标识中的错误

       1、有附件不标注

       2、附件名未标全称

       3、标注不规范“附件”二字顶格标注(正确的是顶格空一字);只标了一个“附”字(正确的是标“附件”二字);附件未全部标注;附件标题末用了标点符号。

       4、内容不适在印发、转发、批转公文的通知中,错将所印发、转发、批转的公文作为附件特殊说明。印发、转发、批转通知和所印发、转发、批转件是共同组成一件公文的,且已在标题中说明,无需作附件标注。

       十一、发文机关标识中的错误

       1、未标发文机关名称,用印章代替

       2、发文机关未用全称或规范化简称

       3、位置不当常见的错误是居中标识或靠右边顶格标识。正确位置一般是从全页垂直中线起向右书写,而且发文机关最后一个字比正文缩四个字或与成文日期标识协调(成文日期的最后一个字比正文缩两个字)。在下列两种情况下发文机关标识可越过中线:一是发文机关全称字数多,从中线向右写,一行写不下时;二是联合发文单位多,竖列太长影响美观时。

       十二、成文日期标识中的常见错误

       1、将拟稿日期作为成文日期

       2、将打印日期作为成文日期

       3、汉字和阿拉伯数字乱用在发文机关署名后标识成文日期时,用阿拉伯数字书写,如:“2022年3月20日”,在题注域内标识时用汉字标识。

       4、标识不全只署月日不署年份,如:“三月二十日”,只署月日不署年份。正式公文成文时期必须将年月日标示完整。

       5、位置不当或与落款不协调常见错误是成文日期第一个字向左越过发文机关第一个字或直接向左靠齐。正确位置一般应是成文日期第一个字与发文机关第三个字(或中间)对齐,向右排印。当发文机关最后一个字比正文缩四个字排印时,成文日期的最后一个字比正文缩两个字。总的原则是,成文日期的标识是与发文机关标识协调,以保持文面的美观。

       6、将月日写成“分子式”如把一月一日写成“1/元”或“1/1”。

       十三、机关印章使用中的常见错误

       1、当用不用干部任免通知等重要文件应该用印而未用印。

       2、不当用却用了印制的有特定版头的一般普发性文件也用了印。

       3、位置不当用印既不压发文机关也不压成文日期或只压其中一个。

       4、模糊不清未及时清洗印章,使印记模糊不清。

       十四、主题词标识中的常见错误

       1、不标引主题词

       2、将标题简单切后分当主题词标引主题词的主要作用是反映公文的类别、主题和表现形式,为检索查询提供方便,由范围(类别词) 内容(类属词) 文种(文件形式)组成,其中的类别词反映公文内容所涉及的范围和应归属的类别,标题中一般不会出现;标题的主要作用是概括公文的性质和要求,由发文机关 事由 文种组成,其中的发文机关一般不宜作为主题词标引。因此,标引主题词时不能简单地切分标题,而应根据公文内容进行分析,弄清公文的类别、主题和表现形式后,再按主题词标引的规范进行标引。

       3、任意生造主题词不在中共中央办公厅、国务院办公厅或上级主管部门统一制发的《主题词表》中选用主题词,而是任意生造。这将导致不能用计算机对公文进行主题检索,完全失去标引主题词的意义。

       4、未先标类别词

       5、任意组配

       6、乱用标点符号两个主题词之间应该用一个空格符分开,错为在主题词间使用了顿号或逗号(但组配标引时可用顿号分开)。

       十五、抄送机关标识中的常见错误

       1、使用已废除了的“抄报”或“报”、“送”、“发”

       2、抄送个人公文不能抄送个人,需要送某位领导阅否由收文机关秘书部门决定。

       3、抄送主送机关既然是主送机关就不必再抄送了。

       4、滥抄滥送将向上级机关的“请示”同时抄送平级机关或下级机关;将公文抄送给与公文内容无关的机关。

       5、标识不规范抄送机关未分类或标点符号使用不当。

       十六、公文处理的误区

       造成公文处理不规范的一个重要原因,是在部分文秘人员的思想认识上存在一些误区,其对公文规范化的危害不小。为推进公文规范化建设,必须提高认识,走出误区。常见的有以下8种:

       1、按老一套办法办文《中国共产党机关公文处理条例》、《国家行政机关公文处理办法》、《国家机关公文格式》、《发文稿纸格式》、《出版物上数字用法的规定》、《标号符号用法》、《出版物汉字使用管理规定》等,都是公文制作的法规性文件,并构成了公文规范的完整体系。同时,公文规范处在不断变化和完善之中,任何标准和规范都可能被修订。广大文秘人员要加强学习和研究,跟踪公文发展的动态,在公文实践中力求使用最新的标准和规范,尽量准确地理解和掌握公文规范的完整体系,不要在新的公文法规颁布很长一段时间后还抱着老一套不放。

       2、不加分析地把上级来文作为范文由于有的领导机关存在对公文规范化的重视程度不够的现象,其所制发的公文难免也有时出现不合规范的地方,而有的基层单位的文秘人员往往认为上级秘书部门水平高,他们制发的公文都是正确的,即使有时发现了与公文规范不一致的地方,也认为上级那样做总是有道理的,于是上行下效,造成不规范公文泛滥。所以,每一个文秘人员都要努力学习,把思想认识统一到公文规范上来,选择范文时要按公文规范进行判断,不能认为发文单位的级别越高其所制发的公文规范化程度就越高。同时,要求级别越高的领导机关越要重视公文处理的规范化。

       3、发往国外的函件用外文汉语是联合国使用的6种语言之一,为世界通用语言,我们在国际交往中完全可以理直气壮地使用汉语。使用中文不仅符合国际惯例,而且也体现了对中国主权、中国文化的尊重。外国人就不会因为你不懂外文而改用你国的文字。

       4、发往港澳台的函件用繁体汉字国际上以简化字为汉语的标准用字,尽港澳台等地仍使用繁体字,但根据《出版物汉字使用管理规定》:“向台湾、香港、澳门地区及海外发行报纸、期刊、图书、音像制品等出版物,可以使用简化字的一律用简化字”。人民日报海外版也早从1992年起就改为简化汉字印刷了。

       5、将被批转、转发、印发的文件当成附件被批转、转发、印发的文件是主体的有机组成部分,不得视为附件。在这种情况下,正文之后,发文机关署名前不得标注被批转、转发、印发的文件顺序和名称,而被批转、转发、印发的文件则标印在公文署名及成文日期之后,文尾部分之前。

       6、以领导人签发代替办公(厅)室核稿有的单位的职能部门办事人员不按办文程序办事,越过办公(厅)室将公文直接送领导签发,并以领导已签发为由拒绝办公(厅)室的核稿和核发。《条例》和《办法》规定,公文在送领导人签发之前,应当由办公厅(室)进行校核。公文核稿的基本任务是协助机关领导人保证公文的质量。就是在领导审批后,正式印发前,还应由办公厅(室)进行核发。

       7、用计算机起草公文时仅将定稿归档由于办公自动化的发展,许多文秘人员直接在计算机上起草文稿,各次修改过程也直接在机上进行,最后打印和归档的是定稿。由于定稿无法体现修改过程,对于非常重要的文稿,一旦出现问题,难以分清责任,档案的借鉴作用就要大打折扣。正确的方法,是在原始稿上反复修改,把经领导签字的修改后的定稿,作为归档的真实原件。

       8、用传真件代替正式文件发文或归档传真件不能代替正式公文,因此,对于重要的公文,虽然紧急情况下可用传真件发文,但发出传真件后要及时补寄正式公文。另外,由于传真件纸张材料的特殊性,保存不久字迹就会全部退尽,如果直接将其归档,时间长了就会失去其档案意义,正确的方法是将传真件复印后归档。由于复印件也容易退色,这时可使用固色剂延长文档保存期限。

第五篇:常见逻辑错误

       人身攻击(adh·minem)

       ·拉丁语「向着人」的意思。辩者用人身攻击来攻击对手,而不是在讨论议题。当辩者不能用证据、事实或理由去维护他的立场,他可能透过标签、稻草人、骂人、挑衅及愤怒的人身攻击方式来攻击对手。

       诉诸无知(appealt·ign·rance/argumentumexsilenti·)

       ·以诉诸无知作为某些证据。(例如:我们没有证据说神不存在,所以祂一定存在。又例如:由於我们没有关於外星人的知识,这表示他们并不存在。)对某些东西的无知,是与它的存在与否无关。

       全知论据(argumentfr·m·mniscience)

       ·(例如:所有人都相信某些东西,每个人都知道的。)辩者需要有全知能力以清楚每个人的信仰、怀疑或他们的知识。小心如「所有」、「每个人」、「每种东西」、「绝对」等词语。

       诉诸信心(appealt·faith)

       (例如:如果你不相信,是不能清楚明白的。)如果辩者倚仗信心作为他论据的根基,那麽你在以後的讨论所能得到的将不多。根据定义,「信心」是倚靠相信,并非靠逻辑或证据支持。信心倚赖非理性的思想,并会产生不妥协。

       诉诸传统(appealt·traditi·n)

       (类似主流思想谬误)(例如:占星、宗教、奴隶)只因为人们以此为传统,与它本身的存活能力无关。诉诸权威(argumentfr·mauth·rity/argumentumadverecundiam)

       *以「专家」或权威的说话作论据的根基,而不是用逻辑或证据来支持该论据。(例如:某某教授相信创造科学。)只由於某个权威的声称,不足以代表他已令这声称正确。假如辩者展示某专家的论据,那麽看看它有否伴随着原因,以及它背後证据的来源。

       不良後果论据(argumentfr·madversec·nsequences)

       *(例如:我们应判被告有罪,否则其他人会仿效而犯上类似的罪行。)只因为讨厌的罪行或行为出现,并不足以代表被告犯了该罪,或代表我们应判他有罪。(又例如:灾难的出现是因为神惩罚不信者,所以我们都应该信神。)只因灾害或惨剧发生,与神是否存在、或我们该信甚麽并无关系。

       恐吓论据(argumentumadbaculum)

       *论据根基於恐惧或威胁。(例如:如果你不信神,你将会下地狱被火烧。)

       无知论据(argumentumadign·rantiam)

       *误导性的论据,倚仗於人们的无知。

       群众论据(argumentumadp·pulum)

       *论据诉诸感性的弱点,而非事实和原因,旨在煽动群众的支持。

       主流思想谬误(bandwag·nfallacy)

       *只因为很多人相信或实践,便认为一个思想有价值。(例如:大多数人相信神,所以它一定是真的。)只因为很多人相信某些东西,与那是事实与否并无关系。如很多人在黑死病时期都相信疫症是由於魔鬼引起,有多少人相信跟疫症的起因全无关系。

       窃取论点(beggingthequesti·n)

       (例如:我们必须鼓励年青人去崇拜神,以灌输道德行为。)可是宗教与崇拜真的产生道德行为吗?

       循环论证(circularreas·ning)

       *陈述某命题,而其实那正是需要被证实的。(例如:神存在是因为圣经有记载,圣经存在是因为神所默示的。)构成谬误(c·mp·siti·nfallacy)

       *当某论据的结论,是倚靠由某东西从部份至整体、或从整体至部份的错误特性。(例如:人类有意识,而人体和人脑都是由原子组成,所以原子都有意识。又例如:文书处理软件由佷多原位组(byte)组成,所以一个原位组是组成文书处理软件的一部份。)

       确认性偏见(c·nfirmati·nbias)

       (类似监视下的选择)这是指一种选择性的思想,集中於支持相信的人已相信的证据,而忽略反驳他们信念的证据。确认性偏见常见於人们以信心、传统及成见为根据的信念。例如,如果有些人相信祈祷的力量,相信的人只会注意到少量「有回应」的祈祷,而忽略大多数无回应的祈祷。(这表示祈祷的价值最差只是随机,最好也只有心理上的安慰作用。)

       混淆相关及起因(c·nfusi·n·fc·rrelati·nandcausati·n)

       *(例如:玩象棋的人男性比女性多,所以男性棋艺也比女性高。又例如:儿童观看电视的暴力场面,成长後会有暴力倾向。)但是,那是由於电视节目引致暴力,还是有暴力倾向的儿童喜欢观看暴力节目?真正引致暴力的原因可能是完全与电视无关。StephenJayG·uld把相关引致的无效假设称为「可能是人类推理上两三种最严重和最普遍的错误」。

       错误二分法/排中(excludedmiddle/falsedich·t·my)

       *只考虑极端。很多人用亚理士多德式(Arist·telian)的「非此即彼」的逻辑去解释上下、黑白、对错、爱恶等。(例如:你若非喜欢它,就是不喜欢它。他如不是有罪,就是无罪。)很多时人们没有看到在两个极端之间出现的连续,这个宇宙也包含很多「可能」的。

       隐藏证据(halftruths/suppressedevidence)

       *故意欺骗的陈述,通常隐藏一些事实,而那是构成准确描述所必需的。

       暗示/诱导性问题(l·adedquesti·ns)

       *问题加入假设,一旦回答便显示了一个暗示性的同意。(例如:你停止了打你的妻子吗?)

       无意义的问题(meaninglessquesti·n)

       *(例如「上面有多高?」「一切皆可能吗?」)「上面」描述方向,不是可衡量的单位。假如一切都证实可能,那麽「不可能」都可能出现,矛盾便出现。尽管一切不一定证实可能,亦可以有无数的可能和无数的不可能。很多无意思的问题都包含了空废的词语,如“is,”“are,”“were,”“was,”“am,”“be,”或“been.”

       统计性质的误解(misunderstandingthenature·fstatistics)

       *(例如:大多数美国人都死在医院内,所以应尽量远离医院。)「统计显示,通常染上进食习惯的人,很少能生存。」--WallaceIrwin

       不当结论(n·nsequitur)

       *拉丁语「它没有跟随」的意思。推断或结论没有跟随已建立的前提或证据。(例如:在月圆时出生的人较多。结论:月圆引致出生率上升。)可是,是月圆引致较多出生,还是由於其他原因(可能是统计上的期望差异)? 监视下的选择(·bservati·nalselecti·n)

       *(类似确认性偏见)指出有利的,却忽略不利的事实。谁去过拉斯维加斯(LasVegas)赌场会见到人们在赌桌上和老虎机上赢钱,赌场经理会响钟及鸣笛以公告胜利者,却永不会提及失败者。这可令人觉得胜出的机会看来颇大,但是事实却刚刚相反。

       错误因果(p·sth·c,erg·pr·pterh·c)

       *拉丁语「它发生在之後,所以它是结果。」与不当结论类似,不过与时间有关。(例如:她去了中国之後病了,所以中国有些东西令到她病。)可能她的病是由於其他原因,与中国完全无关。

       证明不存在(pr·vingn·n-existence)

       *当辩者无法为他的声称提供证据,他可能会挑战他的对手,叫对手证明他的声称不存在。(例如:证明神不存在;证明不明飞行物体未曾到过地球;等等)尽管有人可以在特定的限制中证明不存在,如在盒中没有某些东西,可是却无法证明普遍性、绝对性或认知性的不存在。无人能证明一些不存在的东西。提出声称的人必需自己证明那声称的存在。

       扯开话题(redherring)

       *辩者改变话题,以分散注意力。

       实体化谬误(reificati·nfallacy)

       *当人们把抽象的信念或假设性的构想,当作是实在的事物。如以IQ题作为真实衡量智慧的方法;由抽象的社会构想而来的种族概念(尽管基因属性的存在),源自经拣选的属性组合,或者标签某一组人;占星;耶稣;圣诞老人;等等。

       滑坡谬误(slipperysl·pe)

       *一个步骤、法律、或行动的改变,可引致不良的後果。(例如:如果我们容许医生帮助安乐死,那麽去到最後,政府会控制我们如何死。)不一定只因为我们的改变,出现了滑坡,便会使预计的後果实现。

       片面辩护(specialpleading)

       *以新鲜或特别的声称,抗衡对手的陈述;展示论据时只着重主题中有利或单一的范畴。(例如:神为何在世上创造这麽多苦难?答案是:你必须明白,神自有祂神奇的安排,我们没有特权去知道的。又例如:星座是准确的,但你必须先了解背後的理论。)

       小众统计(statistics·fsmallnumbers)

       *类似监视下的选择。(例如:我的父母吸了一世烟,但他们从未患过癌症。又例如:我不管其他人如何讲T·y·ta,我的T·y·ta却从未发生过问题。)只指出少量有利数据,与整体机会并无关系。〔译注:把Yug·改成T·y·ta使更易明白〕

       稻草人谬误(strawman)

       *创造一个虚假的情况,然後去攻击它。(例如:进化论者认为所有事物都是随机的。)大部份进化论者认为,在自然选择的解释下,可能包括偶发的成份,但并非全然依靠随机。抹黑你的对手只会令讨论的功能偏离。你我皆错(tw·wr·ngsmakearight)

       指控其他人跟我们所做的同样事情,为我们所作所为辩护。(例如:你有甚麽资格批评我?你也跟我做着一模一样的事情!)控方的所犯的罪与讨论本身并无关连。

       分散注意力的谬误(Fallacies·fDistracti·n)

       *两难推理(FalseDilemma)错谬:为多於一个答案的问题提供不足(通常两个)的选择,即是隐藏了一些选择,最典型的表现是非黑即白观点。

       ·例子:萨达姆是邪恶的,所以美军是正义之师。

       ·解释:除正邪之争外,还有邪邪之争及许多难分正邪的纷争,所以不能单以萨达姆邪恶便认定美军正义。诉诸无知(Fr·mIgn·rance)错谬:因为不能否定,所以必然肯定,反之亦然。

       ·例子:没有人能证明鬼不存在,那麽鬼肯定存在。

       ·解释:总有些事是既不能否定,亦不能肯定的。除了肯定和否定,我们还可以存疑吧!

       滑坡谬误(SlipperySl·pe)错谬:不合理使用连串因果关系。

       ·例子:迟到的学生要判死刑。因为迟到是不用功的表现;将来工作也不勤力;不勤力导致公司损失;公司损失就会倒闭;公司倒闭会使人失业;失业造成家庭问题;家庭问题导致自杀率上升,为了防止自杀率上升,我们应判迟到的学生死刑。

       ·解释:滑坡谬误中假定了连串「可能性」为「必然性」。比方说,迟到是否「必然」是不用功的表现?将来工作又是否「必然」不勤力?答案可想而知。例子虽然夸张,但其实许多时候大家亦会犯相同错误而不自知。复合问题(C·mplexQuesti·n)错谬:一条问题内包含两个无关的重点。

       ·例子:你还有没有干那非法勾当?(你有干非法勾当吗?是否还有继续?)

       ·解释:简单的一句提问,其实隐藏了两个问题。你给予其中一条问题的答案,并不一定和另外一条的一样。例如你有干非法勾当,但未必等於你还有继续。

       诉诸其他支持(Appealst·M·tivesinPlace·fSupp·rt)

       *诉诸势力(Appealt·F·rce)错谬:以势力服人。

       ·例子:若你不想被解雇,你必须认同公司的制度。

       ·解释:这是以工作机会强迫员工认同制度,员工不是依据制度好坏来决定认同与否。

       诉诸怜悯(Appealt·Pity)错谬:以别人的同情心服人。

       ·例子:希望你接受我这个多月来天天通宵撰写的建议书。

       ·解释:建议书的好坏,不在乎花了多少时间,而是取决於其内容,提出「多月来天天通宵撰写」只为搏取同情。诉诸结果(C·nsequences)错谬:以讨好或不讨好的结果服人。

       ·例子:你若不听我的话,我便打你,不准你外出,扣起你的零用。

       诉诸不中肯字词(PrejudicialLanguage)错谬:以不中肯的字词修饰论点。

       ·例子:凡是爱国的人都会认同订立国家安全法的必要。

       ·诉诸大众(P·pularity)错谬:以被广泛接纳为理由服人。

       ·例子:看!人人都这样说,还会错吗?

       一厢情愿(WishfulThinking)错谬:以自己单方面想法作为论证根据。

       ·例子:因为我希望明天在户外打球,所以明天一定天晴。

       改变话题(ChangingtheSubject)

       *人身攻击(AttackingthePers·n)错谬〔一〕:以攻击发言人代替攻击其论点(因人废言)。

       ·例子:张厂长反对陈主任增加成本会计部的建议:「你当然说成本会计十分重要,因为你是会计主任。」 ·错谬〔二〕:由回应论点改变为攻击论点发起人的处境。

       ·例子:你竟相信那些草根阶层的说话?

       ·错谬〔三〕:提出「你也是!」的不恰当反问作论据。

       ·例子:父:吸烟对健康不好!儿:为什麽你也吸?

       诉诸权威(Appealt·Auth·rity)

       错谬〔一〕:诉诸讨论的范畴以外的权威人士。

       ·例子:经济学家都认为爱因斯坦的相对论是不可能的。

       错谬〔二〕:诉诸权威人士的个人意见。

       例子:罗局长说:「学生是政府的政策下最大得益者,所以学生无权批评领导人」

       ·解释:学生是政府的政策下最大得益者只是罗局长的说话,事实上学生是否政府的政策下最大得益者,却没有一个客观答案。

       错谬〔三〕:该范畴的权威人士不是认真的回应。(例如:只是在开玩笑/喝醉。)

       ·例子:「有香车自然有美人,BENZ的总公司董事长都这样说啦!」

       匿名权威(An·nym·usAuth·rity)错谬:匿名的权威人士使人不能确定其权威性。

       ·例子:有位心理学家曾经说过,每人都有犯罪倾向。

       ·作风盖过本体(Style·verSubstance)错谬:讨论者以作风盖过事件本身使人认为其论点正确。

       ·例子:以他一向的对人的态度,他一定不会对你好的。

       归纳的谬误(InductiveFallacies)

       *轻率的归纳(HastyGeneralizati·n)错谬:用作归纳总体的样本太少。

       ·例子:我问了十个人,有九个说反对民主党。结论:原来九成香港人反对民主党。

       ·解释:单凭十个人论断香港七百万人?未免太轻率吧。若说访问了数万人,得出来的结果便较有说服力。不具代表性的例子(UnrepresentativeSample)错谬:用作归纳的例子不能代表其总体。

       ·例子:叶继欢持械行劫;林过云奸杀多女;欧阳炳强纸盒藏屍。香港人肯定有杀人倾向。

       不当类比(WeakAnal·gy)错谬:以两件不相似的事件/事物作类比。

       ·例子:他对朋友这麽好,对女朋友一定很好呢。

       懒散的归纳(Sl·thfulInducti·n)错谬:否定归纳得出来的恰当结论。

       ·例子:即使有万多个实验证明化学物质影响我们的感觉,我就是不相信。

       排除证据谬误(Fallacy·fExclusi·n)错谬:故意把重要的证据隐藏,以得出不同的结论。

       ·例子:

       统计三段论的谬误(FallaciesInv·lvingStatisticalSyll·gisms)

       *例外(Accident)错谬:以概括情况加诸应有的例外情况。

       *例子:政府法例规定,行走此公路的汽车最高时速为七十公里。所以即使载着快要生产的产妇,亦不可开得快过七十公里。

       *相反的例外(C·nverseAccident)错谬:以例外情况加诸应有的概括情况。

       *例子:我们准许濒死的病人注射海洛英,基於人人平等,也应让其他人注射海洛英。

       因果的谬误(CausalFallacies)

       *巧合谬误(C·incidentalC·rrelati·n)错谬:以个别情况肯定某种因果关系。

       ·例子:希希吃了一种药,出现过敏反应。因此,希希认为这种药必然导致过敏反应。

       ·解释:希希遇到的只是个别例子,不能因此论断该药必然导致过敏反应。

       复合结果(J·intEffect)错谬:当两件事都为某原因的结果时,以一事为另一事的原因。

       ·例子:记者报导离乡背井的战争难民中的一家人:「他们因为房子被炮火所毁而逃到这里。」

       ·解释:炮火导致这家人的房子被毁及离乡逃难;房子被毁并不导致这家人离开原居地。

       无足轻重(GenuinebutInsignificantCause)错谬:举出无足轻重的次要原因论证,遗漏真正的主因。·例子:吸烟使香港空气质素每况愈下。

       ·解释:导致香港空气质素差的主因是交通公具的废气和天气情况。

       倒果为因(Wr·ngDirecti·n)错谬:颠倒事件的因果关系。

       ·例子:癌症导致吸烟

       ·解释:吸烟才是癌症的原因。

       复合原因(C·mplexCause)错谬:只指出多个原因中的其中一个为事件主因。

       ·例子:你一日到晚都只是玩游戏机而不温习,难怪你考试成绩那麽差。

       ·解释:除了玩游戏机而不温习外,还有其他原因,例如考试期间一时大意或者试题太难,但它们和玩游戏机一样,不一定是主因。

       论点缺失谬误(MissingtheP·int)

       *乞求/窃取论点(BeggingtheQuesti·n)错谬:以假定正确的论点得出结论。

       ·例子:我知道有上帝,因为《圣经》是这样说,而《圣经》是不会错,因为它是上帝写的。

       不恰当结论(IrrelevantC·nclusi·n)错谬:提出作支持的论据主要支持其他结论。

       ·例子:

       稻草人谬误(StrawMan)错谬:扭曲对方论据以攻击之。

       ·例子:进化论说人是由猩猩演化而来。

       ·解释:进化论只是说人和猩猩有共同祖先。

       含糊不清谬误(Fallacies·fAmbiguity)

       *含糊其辞(Equiv·cati·n)错谬:使用有多於一个含义的字眼。

       ·例子:甲:喇叭中学又发生学生殴斗事件。乙:噢!是九龙那所吗?甲:&%^%$&%$#...·解释:甲这里没有表明是新界喇叭,使乙误会成九龙的喇叭书院。

       模棱两可(Amphib·ly)错谬:句子结构含多种解释方法。

       ·例子:

       ·重音谬误(Accent)错谬:以重音强调某字眼或字句,达致其他意思。

       ·例子:

       类目错误(Categ·ryErr·rs)

       *构成谬误(C·mp·siti·n)错谬:以总体的某部份符合某条件推断总体均符合某条件。

       *例子:

       *分割谬误(Divisi·n)错谬:以总体符合某条件推断总体的所有部份均符合某条件。

       *例子:

       不根据前题的推理(N·nSequitur)

       *肯定後件(AffirmingtheC·nsequent)错谬:所有依此结构的推论:若A则必定B;B,所以便A。·例子:如果他在中环,他一定在港岛。因此如果他现在在港岛,他一定在中环。

       ·解释:在港岛不一定要在中环,可以在金钟、湾仔、铜锣湾等。因港岛包含了以上各项。

       否定前件(DenyingtheAntecedent)错谬:所有依此结构的推论:若A则必定B;非A,所以非B。·例子:如果他在中环,他一定在港岛。因此如果他现在不在中环,那麽他一定不在港岛。

       ·解释:不在中环,也可以在金钟、湾仔、铜锣湾等。因港岛包含了以上各项。

       前後矛盾(Inc·nsistency)错谬:断言两件矛盾的事件都正确