鱼C论坛

 找回密码
 立即注册
查看: 4843|回复: 17

go to 我懵了

[复制链接]
发表于 2013-2-21 13:41:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>
  2. void main()
  3. {
  4.          int i,sum;
  5.          sum=0;
  6.          i=1;
  7. loop: if(i<=100)
  8.       {
  9.                   sum=sum+1;
  10.               ++i;
  11.                   goto loop;
  12.           }
  13. printf("%d\n",sum);
  14. }
复制代码
i++和i--算的都是一样结果,这样下来搞晕了,感觉都是一样的作用,i++先自增1在参与运算,和i--选运算在自增,只要开头要给i的赋值改变下,i++和i--用哪个都一样是吗,还有为什么goto 上面不能加else,我用的是IF-else啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-21 14:06:55 | 显示全部楼层
先自增1再参与运算是:++i

先参与运算再自增1是:i++

朋友搞混了~
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-2-21 14:09:48 | 显示全部楼层

自增自减的前缀后缀作为单个表达式效果相同。
i++;与++i效果一样对吗,我试过好多次,自己手算不一样(可能理解错误),但是电脑执行的时候结果都一样
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-21 14:17:37 | 显示全部楼层
qq095795 发表于 2013-2-21 14:09
自增自减的前缀后缀作为单个表达式效果相同。
i++;与++i效果一样对吗,我试过好多次,自己手算不一样(可 ...

这要看编译器怎么优化,不同编译器编译出来的结果有点出入,所以不建议一个表达式同时存在一个以上的++ --运算符。

一般++i 是先递增,再把值使用。例如
int i = 0;
printf("%d", ++i);  // 打印1

一般i++ 是先使用i的值,再递增。例如
int i = 0;
printf("%d", i++);  // 打印0
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-21 15:15:58 | 显示全部楼层
; 出现的时候 前面计算都完成
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-21 21:55:16 | 显示全部楼层
go to比较灵活{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 15:52:01 | 显示全部楼层
小甲鱼 发表于 2013-2-21 14:17
这要看编译器怎么优化,不同编译器编译出来的结果有点出入,所以不建议一个表达式同时存在一个以上的++ - ...

不是说goto是该判死刑的一个东西么?有人告诉我只要你程序里发现不用goto无法实现时,即使代码全部重写也不能用goto。。小甲鱼你怎么看= =
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 16:00:26 | 显示全部楼层
流☆水 发表于 2013-2-22 15:52
不是说goto是该判死刑的一个东西么?有人告诉我只要你程序里发现不用goto无法实现时,即使代码全部重写也 ...

GOTO不应该被判死刑,只要你意识到他可能存在的问题并有能力去避免即可使用。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 16:02:39 | 显示全部楼层
小甲鱼 发表于 2013-2-22 16:00
GOTO不应该被判死刑,只要你意识到他可能存在的问题并有能力去避免即可使用。

好吧,我一直没用过,潜意识里避免。。再问你个问题,:lol我本来就会一点c++,最近把你c++快速入门看完了。。下面看啥比较好= =。你好像没有后续教程了。谢谢。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 16:06:32 | 显示全部楼层
流☆水 发表于 2013-2-22 16:02
好吧,我一直没用过,潜意识里避免。。再问你个问题,我本来就会一点c++,最近把你c++快速入门看完了 ...

应用层面的编程确实还需要等一段时间才推出进阶的,如果是底层的那就有很多可以选择啦~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 16:17:23 | 显示全部楼层
小甲鱼 发表于 2013-2-22 16:06
应用层面的编程确实还需要等一段时间才推出进阶的,如果是底层的那就有很多可以选择啦~

比如说呢。。给个方向吧,最好出作品快点的能激发兴趣的= =。我以后也不指望这个吃饭。。:D谢谢拉
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-22 16:39:20 | 显示全部楼层
5L正解!无论是i++或是++i,在后面出现;后效果就都一样了,就是i=i+1。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-2-22 19:53:17 | 显示全部楼层
ssky 发表于 2013-2-22 16:39
5L正解!无论是i++或是++i,在后面出现;后效果就都一样了,就是i=i+1。

可以再说清楚点吗  ;  不是一样要出现的吗
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-23 10:24:39 | 显示全部楼层
qq095795 发表于 2013-2-22 19:53
可以再说清楚点吗  ;  不是一样要出现的吗

额,我不太听明白你在说什么。
不过++前置还是后置,区别在于如果是前置,就是先将该变量的值加上1再参与表达式的计算,而如果++后置就意味着先用变量当前的值参加表达式计算在将该 变量加上1!举个例子让你看一下
int i = 0;
int j = 0;
int k = 0;
k = (i++) + (++j);     //在这句语句执行之后,k的值为1,i值为1,j的值也是1 (k=0 + 1)
k = (++i) + (++j);     //这句语句执行之后,k的值为4 , i的值为2 , j的值为2 (k = 2 + 2)
k = (i++) + (j++);     //这句语句执行之后,k的值为4 ,i的值为3 , j的值为3  (k = 2 + 2)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-23 11:34:23 | 显示全部楼层
i++; 先使用i的值,在进行自增运算
++i; 先进行自增运算,再使用i的值
i++和++i单独使用时候,其效果都是i=i+1;
如14楼所言 当它们在进行运算过程中,同时进行赋值运算,有区别的
一般情况下忽略不计,完全看个人喜好
对于goto语句,一直没有什么定论 只是建议 慎用
如果代码过长,goto语句将导致代码混乱~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-23 12:02:21 | 显示全部楼层
goto应该还是有用处的嘛,,比如一个C语言写的计算器就可以用它反复计算而不是一撸到底然后退出程序。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-23 13:56:24 | 显示全部楼层
09.                  sum=sum+1;
如果是计算1~100之间整数的和    则  第九行 错误,改成   sum=sum+i;
goto 其实就是跳转的意思,如汇编里的 jmp

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表