Chinaunix

标题: C语言基初`` [打印本页]

作者: m582445672    时间: 2006-09-15 20:15
标题: C语言基初``
main()

                {  int a=6,  b=7 ,  c=8  d ;

                    d=a+++++b+c+++a+++b+++++a  ;

                        printf("%d/n",  d);

                }
我是个C语言的初学者~~~请问哈子~~!~这个垃圾程序错了几点~~!~为什么错了```xiexie`
作者: m582445672    时间: 2006-09-15 20:16
main()

                {  int a=6,  b=7 ,  c=8 , d ;

                    d=a+++++b+c+++a+++b+++++a  ;

                        printf("%d\n",  d);

                }
我是个C语言的初学者~~~请问哈子~~!~这个垃圾程序错了几点~~!~为什么错了```xiexie`


   是这个``~刚刚那个错了~~
作者: flw    时间: 2006-09-15 20:19
我只看到你把“基础”写成了“基初”,后面还带了两个不明意义的符号(``)

BTW:汉语言都学不好,很难学好 C 语言的。
作者: MCSE1983    时间: 2006-09-15 20:25
大家都很幽默啊
作者: frstq    时间: 2006-09-15 20:31
原帖由 m582445672 于 2006-9-15 20:15 发表
main()

                {  int a=6,  b=7 ,  c=8  d ;

                    d=a+++++b+c+++a+++b+++++a  ;

                        printf("%d/n",  d);

                }
我是个C语言的初学者~~~请问哈子~~!~这个垃圾程序错了几点~~!~为什么错了```xi ...


知道i++和++i不同就行了,为什么要这样写呢,这是需要避免的写法。程序不但是给机器看的,还要给人看,简单就好。
作者: mjdcl    时间: 2006-09-15 21:14
这个程序在语法分析的时候就过不了
作者: foolfoolbird    时间: 2006-09-15 22:04
这题看的我晕了!
作者: hypoz    时间: 2006-09-15 22:07
转意字符?"\"? "/"?

main()
{
int a=2,b=3,c=4,d;
d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
printf("%d\n",d);       
}

左结合,老老实实写,“+”多余3个系统就会出错了。
作者: bigapple2008    时间: 2006-09-16 00:15
我是compiler的话,得辞职了
作者: lovesaka    时间: 2006-09-16 03:49
原帖由 flw 于 2006-9-15 20:19 发表
我只看到你把“基础”写成了“基初”,后面还带了两个不明意义的符号(``)

BTW:汉语言都学不好,很难学好 C 语言的。


作者: m582445672    时间: 2006-09-16 13:54
原帖由 flw 于 2006-9-15 02:19 发表
我只看到你把“基础”写成了“基初”,后面还带了两个不明意义的符号(``)

BTW:汉语言都学不好,很难学好 C 语言的。




  基础的初学者  简称" 基初"

  ~~还有那(``)是表示学这蛮辛苦~~!~~!~~那是汗水~~
作者: m582445672    时间: 2006-09-16 13:56
原帖由 frstq 于 2006-9-15 02:31 发表


知道i++和++i不同就行了,为什么要这样写呢,这是需要避免的写法。程序不但是给机器看的,还要给人看,简单就好。




你的意思是``我的 句法是对的~~但是``机器不能读出来``是吗~~??~
作者: m582445672    时间: 2006-09-16 14:02
main()
{
int a=2,b=3,c=4,d;
d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
printf("%d\n",d);        
}

  这样写`还是不行哦 `我是在VISUAL C++ 6.0里面写的`~~


  --------------------Configuration: 111 - Win32 Debug--------------------
Compiling...
Error spawning cl.exe

111.exe - 1 error(s), 0 warning(s)


  下面出现了这个错误``请问`现在改么办啊`~~
作者: aaaab    时间: 2006-09-16 16:27
#include<stdio.h>
作者: redspider    时间: 2006-09-16 19:10
原帖由 m582445672 于 2006-9-16 13:54 发表




  基础的初学者  简称" 基初"

  ~~还有那(``)是表示学这蛮辛苦~~!~~!~~那是汗水~~

lz真是幽默, 笑死
作者: m582445672    时间: 2006-09-16 19:40
main()
{
int a=2,b=3,c=4,d;
d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
printf("%d\n",d);        
}

这些东西需要加#include<stdio.h>  吗???
  跟本就没有用到stdio.h里面的东西啊`~~~
作者: m582445672    时间: 2006-09-16 19:43
不过`我也加了``但是``还是不行哦 ````
作者: neo_yang    时间: 2006-09-17 09:09
这是一个c中称做最长符号名的陷阱,在实际编程中最好是不要这么做.编译器在进行编译时会有一个原则,就是组合出最长的符号.
在这之中还有一个就是由于a+++++b会被组合成(a++) + (++b),为什么呢?是因为a++后返回是r-value,也就是只能出现在等号右边,因此,如果作者意图想让逻辑成为((a++)++)+b的话是会报错的.后面的也是这个原则.
作者: rushrush    时间: 2006-09-17 11:06
无聊题目.. 不看...
作者: m582445672    时间: 2006-09-17 11:22
原帖由 neo_yang 于 2006-9-16 15:09 发表
这是一个c中称做最长符号名的陷阱,在实际编程中最好是不要这么做.编译器在进行编译时会有一个原则,就是组合出最长的符号.
在这之中还有一个就是由于a+++++b会被组合成(a++) + (++b),为什么呢?是因为a++后返回是r ...


'
  a +++++b   我本来就是想他成为(a++)+(++b) ~~我并没有想到他会成为
  ((a++)++)+b的啊~~!~~

  编译器也会自动成(a++)+(++b)的啊~~`为什么会错``~`
   
          你的意思有点不太懂`~!~!~麻烦你能说清楚点吗~?
作者: paloffice    时间: 2006-09-17 11:30
c语言里面运算符的结合都是遵循“大嘴法”,所谓“大嘴法”就是运算符总是结合到不能结合为止。例如:a+++++b,结合出来就是:((a++)++)+b
作者: safedead    时间: 2006-09-17 11:38
看到楼主的帖子
我立刻想起CU的一句名言: 不要挑战编译器的能力
作者: gxguax    时间: 2006-09-17 13:03
标题: 路过
如果哪位的程序是这样写出来的,我想没人会敢要.
请不要就语言而语言.
请做写有意义的code.
这样的题做出来又有什么意义呢!?
作者: libin1983    时间: 2006-09-17 13:11
这样的程序只敢在学校写,在公司会被人砍的
作者: m582445672    时间: 2006-09-17 13:57
原帖由 paloffice 于 2006-9-16 17:30 发表
c语言里面运算符的结合都是遵循“大嘴法”,所谓“大嘴法”就是运算符总是结合到不能结合为止。例如:a+++++b,结合出来就是:((a++)++)+b



呵呵`有点明白了~~~~能多举点这放面的例子吗???
        ~~我是个初学者`~~想更多的了解一下++的风格````谢谢`~~
作者: m582445672    时间: 2006-09-17 14:01
原帖由 gxguax 于 2006-9-16 19:03 发表
如果哪位的程序是这样写出来的,我想没人会敢要.
请不要就语言而语言.
请做写有意义的code.
这样的题做出来又有什么意义呢!?



  我是个初学者``只是想感受一下编程的乐趣~~!~我本来以为``他会自己从左到右结合的``但是他出现了错误~~~~

从这可以回想一下 ``~~++并不是我想象的那么好用~~~编辑器~并不"聪明"
~~~ 看来++是个蛮复杂的运算符啊`~~~
作者: m582445672    时间: 2006-09-17 14:03
原帖由 safedead 于 2006-9-16 17:38 发表
看到楼主的帖子
我立刻想起CU的一句名言: 不要挑战编译器的能力



  那不是看来要学这``还要了解一下``编辑器的特征??
作者: m582445672    时间: 2006-09-17 14:12
int a=6 ,b=7,c=8,d  ;


d=(a++)+(++b)+(c++)+(a++)+(b++)+(++a)  ; 这样的式子从左到右算

       6           8         8         7          8         9          =46

  为什么编辑器上的答案是45啊`~~
 如果说有的编辑器是从右到左算的~~那么
d=(a++)+(++b)+(c++)+(a++)+(b++)+(++a)  ;
   8  9    8  7   7  7   =46
  请问``这是为什么```turboc 2.0上是```45~

  
作者: hongxin_q    时间: 2006-09-17 14:28
原帖由 bigapple2008 于 2006-9-16 00:15 发表
我是compiler的话,得辞职了

深有同感。。嘿嘿
作者: decwang    时间: 2006-09-17 15:08
不要搞的这么啰嗦
作者: m582445672    时间: 2006-09-17 17:00
原帖由 decwang 于 2006-9-16 21:08 发表
不要搞的这么啰嗦




  ............晕` ~~我只是想``我把不懂的``搞懂``我不觉得有什么罗嗦~~!~~
作者: dspringer    时间: 2006-09-17 17:22
标题: 我也是新手^_^
int a=6 ,b=7,c=8,d  ;


d=(a++)+(++b)+(c++)+(a++)+(b++)+(++a)  ; 这样的式子从左到右算

     7           8          8         7            8          7         =45

[ 本帖最后由 dspringer 于 2006-9-20 17:14 编辑 ]
作者: m582445672    时间: 2006-09-17 18:01
原帖由 dspringer 于 2006-9-16 23:22 发表
int a=6 ,b=7,c=8,d  ;


d=(a++)+(++b)+(c++)+(a++)+(b++)+(++a)  ; 这样的式子从左到右算

       6           8         8       "6"         8         9          =45



  从左到右~~要是你第二个a++还是6~~那第三和a既a++怎么变成的9啊~~~
作者: beyondfly    时间: 2006-09-18 08:10
原帖由 hypoz 于 2006-9-15 22:07 发表
转意字符?"\"? "/"?

main()
{
int a=2,b=3,c=4,d;
d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
printf("%d\n",d);       
}

左结合,老老实实写,“+”多余3个系统就会出错了。

这道题,我运行的结果是为19
但是我觉得结果应该为18
2+4+4+2+3+3=18?难道是我哪里算错了???
作者: nicle    时间: 2006-09-18 10:10
原帖由 m582445672 于 2006-9-16 19:40 发表
main()
{
int a=2,b=3,c=4,d;
d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
printf("%d\n",d);        
}

这些东西需要加#include<stdio.h>  吗???
  跟本就没有用到stdio.h里面的东西啊`~~~


看到这里,版主可以封贴了!!!
作者: lonelyair    时间: 2006-09-18 10:47
这道题,我运行的结果是为19
但是我觉得结果应该为18
2+4+4+2+3+3=18?难道是我哪里算错了???

是19
2+4+4+2+4+3=19?

int main()
{
        int a=2,b=3,c=4,d;
        d=(a++)+(++b)+(c++)+a+++(b++)+(++a);
        printf("%d\n",d);        
        return 0;
}


而且程序结束的时候,a,b,c 的值都是5。
作者: njulwc    时间: 2006-09-18 11:03
i++ 和++i  多的时候就不是太好搞的!
作者: csoapy    时间: 2006-09-18 11:06
出的这题和这学生……

简直就是现代老师和现代学生的样本!!


作者: csoapy    时间: 2006-09-18 11:10
中国就是牛人多啊,这么巨难的题还有这么多人做出来!哎,中国的软件看来是大有希望嘀!
作者: angelaevil    时间: 2006-09-18 11:34
楼主的写法,我在惠普上编译是通不过的
作者: yiciyuan    时间: 2006-09-18 12:54
标题: 有必要么??
第一眼就感觉编译器会报错,code基础还要锻炼
看到那么多的++,我觉得合格程序员是不会这样写的,当然测试智商就另外谈了
作者: sithui    时间: 2006-09-18 15:25
看到这种写法我就想踹那个写代码的,狠狠的一脚!
忍住了,不骂人了!
作者: sithui    时间: 2006-09-18 15:27
忍不住还要说一句,浪费大家的时间和精力,,太可恨了!
作者: shaken    时间: 2006-09-18 15:28
写出来的东西还真让人家有想法。
作者: cugb_cat    时间: 2006-09-18 17:28
《C陷阱与缺陷》中对a+++++b的解释是:

  1. a+++++b唯一有意义的解析方式是:
  2. a ++ + ++ b
  3. 可是,我们也注意到,根据大嘴法规则,上式应该被分解为:
  4. a ++ ++ + b
  5. 但是,a++的结果不能作为左值,因此编译器不会接受a++作为后面的++运算符的操作数。这样,如果我们遵循了解析词法二义性问题的规则,上例的解析从语法上来说又没有意义。当然,在编程实践中,谨慎的做法就是尽量避免使用类似的结构,除非编程者非常清楚这些结构的含义。
复制代码

作者: ken1984    时间: 2006-09-18 21:23
这种程序看起来还要记有多少个+号,真是服了,谁给我这样写程序立马炒了。
作者: 撒哈拉里的鱼    时间: 2006-09-19 09:01
难道你们没发现LZ是来找乐子的么?
作者: kingjwj    时间: 2006-09-19 09:49
大家为什么就不能好好的解答一下别人的问题??就知道说别人??
我想说,你们现在是高手了,但还有很多是新手呀?
而且很多可能还是小孩,像我表第,小学开始玩电脑,初中开始接触编程,刚开始当然会有很多问题了,不要总以老人的思维去衡量一个人,好不好??他们需要的是帮助,不是抱怨!!
好好帮助新手吧,他们才是中国未来的希望.
作者: jscmc2004    时间: 2006-09-19 10:38
标题: 还是先学一下汉语吧,呵呵
原帖由 flw 于 2006-9-15 20:19 发表
我只看到你把“基础”写成了“基初”,后面还带了两个不明意义的符号(``)

BTW:汉语言都学不好,很难学好 C 语言的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2