如何使while为智永真草千字文?

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分32阅读权限10帖子精华可用积分32 信誉积分32 专家积分0 在线时间194 小时注册时间最后登录
白手起家, 积分 32, 距离下一级还需 168 积分
帖子主题精华可用积分32 信誉积分32 专家积分0 在线时间194 小时注册时间最后登录
论坛徽章:0
我想让while循环一直执行,也就是条件永真,可以用空表示吗,如何表示?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分2601阅读权限50帖子精华可用积分2601 信誉积分1535 专家积分10 在线时间2587 小时注册时间最后登录
小富即安, 积分 2601, 距离下一级还需 2399 积分
帖子主题精华可用积分2601 信誉积分1535 专家积分10 在线时间2587 小时注册时间最后登录
论坛徽章:0
& && && && && && & !!!!!!!!!!!!!!!!!!
UID空间积分0 积分32阅读权限10帖子精华可用积分32 信誉积分32 专家积分0 在线时间194 小时注册时间最后登录
白手起家, 积分 32, 距离下一级还需 168 积分
帖子主题精华可用积分32 信誉积分32 专家积分0 在线时间194 小时注册时间最后登录
论坛徽章:0
原帖由 timdcn 于
16:27 发表
& && && && && && & !!!!!!!!!!!!!!!!!!
谢谢ms不行阿。我的代码是这样的
#& & & & The program will show a menu in the screen and do different things according to user's choice.
#& & & & & & & & & & & & & & & & Sun& & & & & & & & & & & & & & & & & & & & 0.1
mydate=`date +%d/%m/%Y`
local_host=`hostname -s`
user=`whoami`
# begin loop forever
& & & & tput clear
& & & & cat &&mayday
& & & & -------------------------------------------------------------------------------------------
& & & & User: $user& & & & & & & & & & & & & & & & Host: $local_host& & & & & & & & & & & & Datemydate
& & & & -------------------------------------------------------------------------------------------
& & & & & & & & & & & & 1 : List files in the current directory
& & & & & & & & & & & & 2 : Use the vi editor
& & & & & & & & & & & & 3 : See who is on the system
& & & & & & & & & & & & H : Help screen
& & & & & & & & & & & & Q : Exit Menu
& & & & --------------------------------------------------------------------------------------------
& & & & mayday
& & & & echo -e -n & \tYour choice [1,2,3,H,Q] &&
& & & & read choice
& & & & case $choice in
& & & & 1) ls
& & & && & ;;
& & & & 2) vi
& & & && & ;;
& & & & 3) who
& & & && & ;;
& & & & H|h)
& & & & cat &&mayday
& & & & This is the help&&screen,nothin here yet to help you!
& & & & mayday
& & & && & ;;
& & & & Q|q) exit 0
& & & && & ;;
& & & & *) echo -e &\tunknown user response&
& & & && & ;;
& & & & esac
& & & & echo -e -n &\tHit the return key to continue&
& & & & read dummy
提示:line 47:syntax error :unexpected end of file
UID空间积分0 积分1003阅读权限30帖子精华可用积分1003 信誉积分105 专家积分45 在线时间2 小时注册时间最后登录
家境小康, 积分 1003, 距离下一级还需 997 积分
帖子主题精华可用积分1003 信誉积分105 专家积分45 在线时间2 小时注册时间最后登录
论坛徽章:0
while [ 0 ]
UID空间积分0 积分963阅读权限20帖子精华可用积分963 信誉积分102 专家积分5 在线时间14 小时注册时间最后登录
丰衣足食, 积分 963, 距离下一级还需 37 积分
帖子主题精华可用积分963 信誉积分102 专家积分5 在线时间14 小时注册时间最后登录
论坛徽章:0
while (true)
UID空间积分6 积分15259阅读权限100帖子精华可用积分15259 信誉积分2355 专家积分65 在线时间8851 小时注册时间最后登录
帖子主题精华可用积分15259 信誉积分2355 专家积分65 在线时间8851 小时注册时间最后登录
论坛徽章:1
while :;do :;done
echo '++++++++++[&++++++++++[&+&-]&-]&&-.+++++++.---------.++++++++.&&++++[&++++[&+&-]&-]&&+.-------..' | sed '
s/\([-+]\)/\1\1*p;/g
s/&/p--;/g
s/&/p++;/g
s/\./putchar(*p);/g
s/\[/while(*p){/g
1s/^/main(){char*p=calloc(1,6);/
/./!d'|gcc -xc - 2&/dev/null&&./a.out
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处后使用快捷导航没有帐号?
查看: 1330|回复: 8
【C开发】无限循环 while(1) 和 for(; ;)
在线时间1796 小时
威望3818 分
芯币23898 枚
E金币146 枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 3818, 距离下一级还需 2182 积分
无限循环有两种常用的方法:
while(1) 和 for(; ; ) 。
两种方法的效果一样,相比之下,哪种更好些?
编译后代码对比:
1、while( 1 );
<font color="#828 mov eax,10040102D test eax,eax0040102F je main+23h (<font color="#833)<font color="#831 jmp main+18h (<font color="#828)
2、for( ; ; );
<font color="#833 jmp main+23h (<font color="#833)
对比发现,for(; ;)指令少,不占用寄存器,而且没有判断、跳转,比while( 1 )要好一些。
在线时间1261 小时
威望21416 分
芯币10675 枚
E金币106 枚
TA的帖子TA的资源
死循环这种事,您一到这,就像遇上几辈子的爱人或者仇人一样,不管如何都将在此死死纠缠……既然如此,你还纠结什么指令效率,运行时间呢?
版主提醒,程序还是很美好的,有很多机制,实际应用的问题要烧脑细胞的,珍惜脑细胞,请不要再纠结这种没几毛钱意义的问题了。
在线时间165 小时
威望188 分
芯币1041 枚
TA的帖子TA的资源
死循环天天都碰到啊。windows开机就进入死循环。嵌入式就是在死循环里转。
虽然for比while编译后占用资源小,但是我还是偏向while。因为看到whil(1)比看到for(; ;)更容易理解。while(1)就是一个永真的循环。for(; ;)没有表达任何意义。而且对于for()可以在循环体内修改参数,使for()不是一个永真循环。
[ 本帖最后由 kittka 于
18:40 编辑 ]
在线时间218 小时
威望3249 分
芯币2220 枚
TA的帖子TA的资源
楼主的分析非常的犀利,很赞同!
这玩意虽然没有几毛钱,但是做为一个开发工程师,了解里面的机制还是非常有用的。
再问楼主,你上面的指令调用是怎么查看对比出来了,介绍一下啊!
邮箱:Ternence.
在线时间24 小时
威望162 分
芯币112 枚
TA的帖子TA的资源
这个问题不必纠结了,而且不同的编译器编译出来的可能结果和LZ的不一样;从个人编程风格取舍吧!譬如有的人就喜欢while(1);这样的,因为它直观;而for( ; ; );略显隐晦。
在线时间63 小时
TA的帖子TA的资源
本人比较喜欢while,一来比较直观,二来可以做无穷循环切换。
在线时间218 小时
威望3249 分
芯币2220 枚
TA的帖子TA的资源
刚才对楼主的编译做了一个测试,请楼主对自己编译后的代码是怎么获取到的解释一下。
刚一看,感觉楼主很犀利,实际验证了一下,请楼主对我的现象解释一下!
编译的过程是:预处理,编译,汇编,链接。
在编译这个步骤的时候把程序编译为汇编代码,对while和for的汇编代码进行对比:
源程序while.c#include
int main(void)
{
& & & & while(1)
& & & & {
& & & & & & & & printf("hello eeworld !\n");
& & & & & & & & sleep(1);
& & & & }
& & & & return 0;
}复制代码源程序for.c#include
int main(void)
{
& & & & for(;;)
& & & & {
& & & & & & & & printf("hello eeworld !\n");
& & & & & & & & sleep(1);
& & & & }
& & & & return 0;
}复制代码分别对上面的两个程序进行编译gcc -S while.c;&&gcc -S for.c
分别在当期目录下面生成 while.s和for.s
汇编代码如下:
while.s .file& & & & "while.c"
& & & & .section& & & & .rodata
.LC0:
& & & & .string& & & & "hello eeworld !"
& & & & .text
.globl main
& & & & .type& & & & main, @function
main:
& & & & pushl& & & & %ebp
& & & & movl& & & & %esp, %ebp
& & & & andl& & & & $-16, %esp
& & & & subl& & & & $16, %esp
.L2:
& & & & movl& & & & $.LC0, (%esp)
& & & & call& & & & puts
& & & & movl& & & & $1, (%esp)
& & & & call& & & & sleep
& & & & jmp& & & & .L2
& & & & .size& & & & main, .-main
& & & & .ident& & & & "GCC: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3"
& & & & .section& & & & .note.GNU-stack,"",@progbits复制代码for.s .file& & & & "for.c"
& & & & .section& & & & .rodata
.LC0:
& & & & .string& & & & "hello eeworld !"
& & & & .text
.globl main
& & & & .type& & & & main, @function
main:
& & & & pushl& & & & %ebp
& & & & movl& & & & %esp, %ebp
& & & & andl& & & & $-16, %esp
& & & & subl& & & & $16, %esp
.L2:
& & & & movl& & & & $.LC0, (%esp)
& & & & call& & & & puts
& & & & movl& & & & $1, (%esp)
& & & & call& & & & sleep
& & & & jmp& & & & .L2
& & & & .size& & & & main, .-main
& & & & .ident& & & & "GCC: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3"
& & & & .section& & & & .note.GNU-stack,"",@progbits复制代码对比两个汇编代码,除了第一行的文件名不同,其他都是一样的,请楼主对这个现象解释一下???
邮箱:Ternence.
在线时间1261 小时
威望21416 分
芯币10675 枚
E金币106 枚
TA的帖子TA的资源
换多几个编译器试试呗~~~~
一个gcc又不能说明什么
在c51下是不一样的,听说。
在线时间84 小时
威望704 分
芯币385 枚
TA的帖子TA的资源
具体编译器具体分析~~~~~~~
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
Powered by
逛了这许久,何不进去瞧瞧?CH4-3循环结构_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
CH4-3循环结构
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:229.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢while 循环中,一定要有能使while后面表达式的值变为“假”的操作! 这句话对吗?为什么?谢谢请回答!_百度知道
while 循环中,一定要有能使while后面表达式的值变为“假”的操作! 这句话对吗?为什么?谢谢请回答!
可以break,旦筏测禾爻鼓诧态超卡另外如果是有符号数,一直自增会溢出,所以也会跳出循环。while(true);这种一般是用在嵌入式操作系统中比较多,由中断处理事情,不过一般while循环中会有sleep之类的。
其他类似问题
为您推荐:
其他2条回答
旦筏测禾爻鼓诧态超卡是的,就是在while{}的{}中一定要有能是while的条件变为假的语句,或者是break ,否则就是死循环了
不对。也有while(true)
}这样的句式。在c或者c++里面可以见到。
while的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3.6. Hello world 循环版
分支程序中,每次运行程序,我们只能“遇”见两个人,如上例运行结果中的“志玲”和“丁小聪”。
循环版的任务,就是让程序将之前的过程,不断地重复执行,每次都会要求你重新输入人名。
创建一个新的C++控制台应用,项目名称为“HelloWorldWhile”。
聪明的你可能已经猜到了,这回我们要用到的关键字是“while”。
while在C++中程序中,实现某一流程的循环,其语法格式如下:
while (条件){
//条件为真时,反复执行此处代码。}
本例中,我们将为while提供永远为真的条件,比如 2 & 1。
起始代码来自上一例:“Hello world 分支版”。注意!包括修改main.cpp文件编码为“WINDOWS-936”。(如果你不这样做,你永远也不会遇上你的“志玲”。)
这回我们修改的位置是main函数。
3.6.2. 修改main函数
int main(){
string name;
while (<font color="#&<font color="#)022
cout && "Please input the name: ";024
getline(cin, name);025
Hello(name);026
return 0;}
023~025行来自于前一个例子中的代码。我们所做的是:
第一、 在这些代码之外,“套”上一个while循环框架:
<font color="#1
while (<font color="#&<font color="#)022
第二、 删除掉原先代码中,用于第二次录入姓名的代码。
原因很简单,“2&1”这个“永真”的条件,会让这个程序永远、永远地运行下去——你要问永远有多远?就是一直到天长地久,到海枯石烂,到机器关机,或者到你在控制台下按下:“Ctrl + C”强行中断这个程序。
〖危险〗: 死循环通常很恐怖!
Ctrl + C,中断控制台程序。记住这个热键的作用。否则作为程序的用户,当你运行本例的程序时,可能会被它不屈不挠的死循环激怒。 别轻易让一个程序在代码某处掉入死循环——除非这就是你想要的。
然用“2&1”来表示一个“永真”条件,那是相当的直观,但在代码中炫耀自己的渊博的数学知识——尤其是学龄前积累来的——永远不是一个程序员所应
该做的。C++提供了一个关键字表示“真”,它就是英文中的“true”。让我们用“true”替换“2&1”。
<font color="#1
while (true){
cout && "Please input the name: ";
getline(cin, name);
Hello(name);}
运行结果:
(图 19 循环版Hello World运行结果)
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:382916次
积分:6504
积分:6504
排名:第1535名
原创:126篇
评论:1585条
(1)(1)(1)(2)(6)(9)(1)(2)(2)(2)(2)(2)(8)(21)(10)(4)(9)(12)(1)(5)(7)(18)

我要回帖

更多关于 真永远 的文章

 

随机推荐