第一篇:领导向下沟通中的常见语言错误
领导向下沟通中的常见语言错误
用户: 一片田
专业度: 19164 时间: 2008-11-25 上午8:55
有效的沟通是不断跨越障碍的过程。上下级沟通的障碍来自哪里?来自于沟通的一方或双方的错误的沟通立场,而这种错误的沟通立场又通过错误的沟通语言表现出来。
许多研究发现,一些驾轻就熟、脱口而出的语言,成了“杀手”式的语言信息,阻碍了上下级沟通的效果,导致了上下级之间的误会和冲突。所以,提高上下级沟通的效果,首先应从分析错误的沟通语言着手。
汤玛斯。高登和克里斯。科尔等心理学家曾经把错误或不当的沟通语言分为三大类。参照他们的分类,结合我国企业中上下级沟通的一些实际状况,这里我们把向下沟通中常见的语言错误划分为四类:发号施令型、傲慢无礼型、讽刺挖苦型与隔靴搔痒型。
发号施令型
发号施令型语言总是告诉员工:作为一个员工,他(她)“应该”怎么做、“必须”怎么做、“最好”怎么做、“可以”怎么做。
发号施令型的上级认为,通过这样的语言可以向员工传递解决问题的办法,期望员工最好能无条件地接受。它也是许多上级最喜欢使用的一种语言。
发号施令型语言可以分为四种,根据上级使用的频率排列为:
命令
例如:。这里轮不到你说话,你的任务就是好好听我说!。不许辩解,没有任何借口!。怎么这么罗嗦,按照我说的去做就行了!
这种语言使人感到,员工的感受、需求或问题并不重要,他们必须顺从上级的感受与需要,并有可能产生对上级权威的恐惧感。这是上级单方面发出的语言信息,员工的情感或需求没有得到尊重,因此员工有可能对上级产生怨恨、恼怒和敌对的情绪,比如顶撞,抗拒,故意考验上级决心,发脾气等。
威胁
例如:。如果你们这次再完不成指标,我就要扣你们全年奖金!。如果你再不改,我就会汇报给大老板,叫你死得很难看!
这种语言与命令很相似,只是再加上告诉员工不服从的后果是什么。这种语言可能使员工感到恐惧和屈从,也可能引起员工的敌意。员工有时还可能对此做出与上级期待的相反反应:“好啊,不管你说什么,我都不在乎,看你把我怎么样!”更有甚者,做一做刚才被警告过的事,好看看上级真的是否言出必行。
强加于人
例如:。昨天为什么没有完成任务?是不是没有照我的话去做?你知道如何来安排工作程序吗?让我来告诉你。……。今天找你来,是要与你讨论你这次工作失误的事情。经过我对你的分析,我发现你存在的问题是粗心。你说是吗?记住:下次要细心!好,我的话讲完了,你可以回去了!千万要记住我的话,别再粗心!
其实,这个员工工作失误未必是因为粗心,也许还有更多的原因。上级找这个员工来谈话,目的是为了帮助他找到这次失误的原因,提高工作效率,但因为没互动和交流,导致了他们之间的谈话毫无效果,并让员工感到上级并不想、也确实不了解自己。
“强加于人”实际上也是微妙地下命令,但是它可以更巧妙地隐藏在貌似很有礼貌的、富于逻辑的陈述中,但讲话的这一方只有一种心态:“你是我的员工,所以必须按照我的观点来做。”
因为不给对方发表自己意见的机会,因而这类谈话进行得很快,员工也根本没有时间表达自己的想法,从而会感到自己的权利被剥夺。长此以往,员工还会产生一种“上级总是认为我不行,有改也改不完的许多缺点”等压抑感。
过度忠告
例如:。如果我是你,肯定不会像你这么做。以后给我记住:一定要先找本地的给客户,再找外地的给客户。
这样的语言信息是在向员工证明:上级不信赖他们自身解决问题的能力。其后果往往会使员工对上级产生依赖心理,削弱他们独立判断的能力和创造力。
过度忠告也意味着上级的一种自我优越感,容易引起追求独立的员工的反感。
有时这种语言信息还会使员工感到被误解,甚至这样想:“如果你真正了解我,就不会给我出这种又馊又笨的主意,说不定外地的是个大客户呢。”
发号施令型语言是上级平时使用得最多的一种语言。许多上级认为它是见效最快的语言。它的优点是上级可以快速解决员工存在的一些问题,而缺点是使用过度就会失效。根本原因在于:第一,容易造成员工反感。这种语言的后面常常隐藏着这样的意思:“你太笨了 ”,“你太差劲了”,“你要听我的”,“我是权威”等等。这让员工听后很反感,随之出现逆反心理或顶撞情绪。有经验的上级会发现,当一个员工接受这样的语言时间较长后,会变得烦躁、自卑,或对以后类似的语言漠然,以至于有许多上级和家长总是抱怨:“为什么孩子越被教育却越不听话?”
第二,容易使员工顺从,却不容易产生积极的行为。
第三,它所表达的信息仅涉及员工而不涉及上级本身。由于员工不知道他的行为对上级有什么影响,只知道上级要求他对某些行为进行改变。在这种单方面的沟通渠道中,员工也会单方面地对上级作不正确的推测,比如:“这位上级偏心,心胸狭隘,脾气坏,专门拿我们出气,对我们要求太高”,等等。员工有了这样的负面心态,就不会从正面来接受上级原本良好的用意了。
傲慢无礼型
傲慢无礼型语言可以分为三种:
训诫
例如:。你是个学会计学的大学毕业生啊,应该知道报表上这些数字代表什么?否则你得到学校里去回炉了!。你应该很清楚,在上级面前应该怎样说话!
这种语言表达了一种预先设定好的立场,使员工感受到与上级之间地位的不平等,感受到上级在运用上级权威,导致员工容易对上级产生防卫心理。
当上级运用这种语言模式的时候,常会使用这些短语:“你应该”;“如果你听从我的劝告,你就会”;“你必须”等。
这类语言在向员工表达:上级不信任你们的判断能力,你们最好接受别人所认为的正确判断。对于越资深的员工,“应该和必须”式的语言越容易引起抗拒心理,并导致他们产生更强烈地维护自己的立场。
标记
例如:。我发现公司里一有麻烦,总有你的份!。我早就知道你不行!因为你太懒惰。我看你永远改不好了!
这种语言一下就把员工打入了“另类”,最容易令员工产生自卑感或“破罐子破摔”式的消极心态。
面对上级这样的标记语言,员工会感到自尊心受到了损害。为了维护自己的形象,他们以后就会在上级面前尽量掩饰自己的想法和情感,不愿将内心世界向上级打开。
一些调查表明:公司中最得不到员工尊重的上级是经常给员工打标记的上级。所以,上级对此必须特别注意。
揭露
例如:。你这样对抗上级无非是为了出风头!。你心里想什么我还不知道,在我面前你别想玩什么花招!。说几句认错的话就想蒙混过关?其实是害怕我在会议上公开批评你吧?可我今天偏要公开批评你!
其实,上级让员工知道“我知道为什么”、“我能看穿你”并不是件好事。因为如果上级分析正确,员工会由于被揭穿而感到窘迫或气恼。而如果上级分析不正确,员工也会由于受到诬赖而感到愤怒。他们常常认为上级是在自作聪明,自以为能像上帝一样居高临下地洞察所有员工的内心,感觉莫名其妙地好。
傲慢无礼型语言在不同程度上都有明显贬损员工的意味。它们会打击员工的自尊心,贬低员工的人格,并明确地表达下列意思:“你是问题员工”;“你不好”;“我不喜欢你、甚至讨厌你”;“我对你没有信心”等等。
员工如果经常听到这类语言,就有可能形成“我是一个差劲的人”等自卑心理,长此以往会对员工的身心发展造成较大的伤害。
由于这种语言常常使员工的自尊心受到伤害,他们也可能随之出现反攻击的心态。这时,上下级之间可能出现大的冲突。
更重要的是,傲慢无礼型语言给上级的形象蒙上了粗鲁、教养差等阴影,给员工造成负面影响,对他们的成长十分不利。
讽刺挖苦型
讽刺挖苦型语言可以分为两种:
暗示
例如:。你讲话的水平真高啊,看来以后我的位置该让给你了吧。临近年底了才完成60%的任务,你还不着急,真是胸有成竹啊,看来名牌大学毕业的高人真是能力强啊。这类语言虽然相对说来比较温和,但效果往往很差。
原因之一:由于员工年轻、注意力不够集中或认为不关自己的事等,大多数人并不能够透彻地理解这些暗示,所以有时上级会感到自己是在“对牛弹琴”。
原因之二:哪怕有些员工明白了上级话语的部分含义,也会觉得上级说话如此拐弯抹角而有失坦诚,觉得上级“太做作了”,从而失去了对上级的信任。
原因之三:即使员工听出了上级的“话中之话”,也只会对上级的说话动机和人品做出鄙夷性的评价。
中伤
例如:。你的报告写得太好了,我的水平太差,实在看不懂!。你以为你是比尔。盖兹吗?不要自以为懂得很多了!
这类话语一出口,就流露出对员工的明显鄙视,还带有有一些人格侮辱的成分在内。
对这类中伤性的语言,员工会非常反感。他们即使当面不敢说,心里却会反击:“你有什么资格来消遣我。看你说话的样子,哪像个上级!”
上级在使用讽刺挖苦型语言的时候,是希望员工听懂这些话中的弦外之音。他们认为这是一种较为温和、较为“高雅”的表达方式。这类语言的潜台词是:“如果我们把话挑明你们就会不喜欢我”,“跟你们坦白太危险了”,“我是有水平的上级,不会像你们这群傻瓜那样直筒子式地说话”。
不要以为仅仅是发号施令型和傲慢无礼型语言才有许多不良的后果,讽刺挖苦型语言对员工的伤害也非常大。因为这类语言的深处隐藏着的是对员工的厌恶和轻视。
隔靴搔痒型
隔靴搔痒型语言主要有两种:
空口“安慰”
例如:。不要难过!太阳每天都是新的,明天你就会好起来。不要着急,你还年轻,人生之路长着呢。回去休息休息,明天一切都会好起来。
在这些并不能解决实际问题的、没有意义的安慰中,隐含着一丝“哀其不幸”式的怜悯感。因此,员工会感到双方并没有站在平等的地位对话,而自尊心越强的员工越不喜欢上级这样的讲话方式。
泛泛之辞
例如:。总的看来,你基本上还算是一个合格的员工。我也不知道对你说什么好,你自己好自为之吧。你需要发扬优点,改正缺点。
这种泛泛而论的评价过于简单,对于员工的成长根本无益。而员工也会怀疑上级是否真正关心自己。当上级安慰一个痛苦中的员工、或员工急切地要求上级对自己有所帮助时,隔靴搔痒式的语言会让员工非常失望。进而他们就会对上级产生无能、自私、冷漠等不良印象。如果员工经常听到上级说此类话,还会怀疑上级是否一直在敷衍自己,对自己毫无爱心。长此以往,上下级关系就不会融洽,隔阂日益加深。
许多员工在回忆自己的职业生涯时,经常会提及若干印象最深刻的事情。他们也许会说,当时是上级一次意味隽永的激励使自己受益一生;但也许会说,当时是上级的一句话深深地伤害了自己,成了自己“永远伤心的理由”。上级不能轻视自己的一言一行,不能在无意中成为沟通的“杀手”。建设和谐的企业文化,需要从认真对待每一句话、每一次沟通开始。
第二篇: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 结构体的长度为零
第四篇:一、向下沟通——下达任务技巧
上下级沟通技巧
在职场中,与上级、下级、同事、外部客户或者自己沟通时,经常会出现一些问题。例如,跨部门沟通时,不同部门因为职能不同看待同一个问题的观点角度不同,容易出现冲突;在部门内部,每个人的立场不同,同样面临冲突;部门或者个人之间因为工作安排不同,有时工作协调困难等。
在生活、工作中,与其他人沟通前,首先面对如何与自己沟通,自我沟通能力与自身的情绪、情商和压力管理能力等紧密相关。例如,在工作中,有些人遇到困难无法按时完成任务时,不主动与领导沟通,导致今后的工作更难开展。因此,每个人都要学会问自己开放式的好问题,掌握自我沟通要点。
一、向下沟通——下达任务技巧
【案例】
领导下达的任务
在电视剧《杜拉拉升职记》中,杜拉拉的上级领导安排她完成两件工作:第一,撰写优秀员工评选文案;第二,为评选出的优秀员工准备礼物。
杜拉拉听后回答:“没问题!”然后很顺利地写出了文案,并策划采用笔、本之类的文具系列作为获奖礼物,之后把文案报告和礼品策划拿给领导审查。出乎杜拉拉意料的是,上级领导对她的方案非常不满意,说道:“这个评选文案很像感谢信,没有体现公司的企业文化,并且作为全球五百强企业,员工对于优秀员工评选具有很高的期望,这样的礼品和要求差距太远……”杜拉拉听后,只能不停地说:“对不起!我没有问清楚。”
上述案例中,领导在给杜拉拉布置工作任务时,并没有对工作结果提出具体要求,也没有说明要求策划文案和礼品符合公司的企业文化,所以在沟通中领导具有一定的责任。
作为上级,在分配任务时,需要问自己是否说清楚工作任务;作为下级,在接受任务时,需要问自己是否明白任务的具体内容。
1.准确传达任务的意图
作为上级,要学会准确传达任务的意图。
【案例】
吩咐下属复印文件 某领导要吩咐一项任务给下级张小姐:“张小姐,请你将那个调查报告复印两份,在下班之前送到总经理办公室交给总经理,请留意复印的质量,总经理要带给客户参考!”可以看出,这个任务下达地非常清晰明确,包含了很多关键点:复印两份、时间节点是下班之前、需要注意复印的质量、总经理要带给客户参考。
如果把这个任务简洁化为:“小张,麻烦您把这个报告复印两份,待会交给总经理。”这样与之前任务对照后发现缺失了很多关键因素:在时间上,“待会”与“下班之前”的概念不一样;在复印质量上,没有明确的用途说明,如果复印件出现污秽,不仅影响公司的内部使用和阅读,还会达不到客户要求。根据这样的指示,如果下级没有很好地完成上级交代的任务,责任更多地归于上级领导。
在工作中,如果上级没有交代任务背景,下属依旧会去做事情,但不会积极主动,更不会用创造性的方式去做,只能被动地执行,所以上级下达任务时,任务背景不可缺少。
【案例】
下达布置答谢会的任务
某公司市场部的王经理将老客户答谢会活动现场的布置任务交给了主管小刘,要求小刘在星期五之前完成会场布置任务。接受任务后,小刘作为主管并找来三个下属,当面告知如何布置会场,开始亲自准备。
结果到星期五时,市场部王经理非常不满意会场布置,提出异议:“为什么将椅子放成一排一排的,不便于大家交流呀!为什么只放三排,才20个座位,明天可能会来40多人,也没有准备茶点!……”
一方面,作为下属,虽然小刘积极地执行了任务,但是上级王经理仍然不满意,感觉环境布置不合自己心意;另一方面,小刘感觉已经尽心竭力做好工作,王经理有些“鸡蛋里挑骨头”,过于苛刻。
通过案例可见,上级和下属对对方都有看法,工作没有做到位其实双方都有责任,但在高效沟通中,管理者应该承担100%的责任,因为上级向下级分配任务时,没有将任务的具体标准说清楚,王经理并没有告诉小刘要将会场布置成什么样子,是否需要茶点,是否需要条幅等,而且小刘也没有提问,双方都以为相互明白,缺少双向沟通,结果出现差距。所以上级对下级准确传达任务的意图非常关键,上级要将事情说清楚。
2.学会使部下积极接受任务 上级分配任务之后,要学会让下属能够积极地接受任务,不断地激励、激发下属,这样下属的主观能动性才会发挥出来。
具体来说,上级可以通过以下方法促进下属的工作:
态度和蔼,用词礼貌
在职场中,往往上级不注重对下级的态度,但是下级特别注重对上级的态度,而且特别敏感,如“小张把这东西复印一下”和“小张,麻烦您帮我把这复印一下”,前者命令似的口吻和后者朋友式的口吻完全不同。因此,在沟通时需要注重对方的感受,不能永远用命令式的口吻,要懂得态度和蔼,用词礼貌。
让部下明白工作的重要性
上级向下级分配任务时,要将工作任务的重要性推销给下属。
【案例】
麦当劳的CEO
众所周知,麦当劳是美国企业,但在2004年麦当劳公司启用了一个新的CEO,他是澳大利亚人。
这位CEO的职业经历具有传奇色彩,17岁左右在麦当劳打工,具体工作是刷厕所,两个小时后他不愿意干了,他的直属经理就在午餐时与他交流:“你知道吗,其实你做的工作是麦当劳里最重要的工作之一,因为麦当劳具有四大宗旨:品质、服务、物有所值和清洁。”
从此以后,这位小伙子认识到刷厕所工作虽不光鲜但很重要,于是端正工作态度,充分发挥工作主观能动性,在四年时间里把分店中的所有岗位做了一遍,他21岁时成为年轻的店经理,尔后不到10年掌管20多家分店,20年后在美国成为拥有两万多家全球连锁店的公司老板。在他就任的第一天,他谈道非常感谢他的第一任直属经理,让他明白了刷厕所的重要性。
可见,上级向下级分配任务时,有责任将工作的重要性推销给下属,这样能够促使下属出色地完成任务,成就下属的职业生涯。
共同探讨,让部下提出疑问
上级再给下属分配完任务之后,需要向下属提出问题,可以询问下属“这件事情你准备怎么办?”下属会将思路和难点分享出来;如果上级只是询问“还有没有问题?”,下级会因为担心被别人认为事多而不敢提问,所以与下级沟通时需要采用灵活的方式,使部下能够积极地接受任务。
3.执行前,要下级复述任务内容 上级向下级传达任务后,需要要求下属复述工作任务;即使上级没有要求复述,下级也要首先复述工作任务。
在工作中,上级和下级都要养成复述的习惯,上级要求复述,下属主动复述,共同促进完成工作。
第五篇: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);}