你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
【3.4签到】每日问答——语句for( ;1 ;)有什么问题?它是...
[复制链接]
苏柚
提问时间:2016-3-4 08:43 /
赞
0
收藏
1
评论
128
分享
发布时间:2016-3-4 08:43
请先
登录
后回复
128个回答
jundao721
回答时间:2016-3-4 08:48:34
a0a.1 32b0c
一直为真,无限循环,直到强制退出该语句!签到哦
赞
0
评论
回复
支持
反对
OPTION_REG
回答时间:2016-3-4 14:04:04
a0a.1 32b0c
认真对待ST的“每日问答”!
编程语言的描述一般可以分为语法及语义。
语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。
编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段。
词法分析器:输入源程序,进行词法分析,输出单词符号。
语法分析器:在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的“程序”。
中间代码生成器:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式。
优化:对中间代码进行优化处理。
目标代码生成器:把中间代码翻译成目标语言程序。
好了,说了那么多,那么,语句到底有什么问题呢?看下图
在uVision开发环境下,C51编译器,“for(;1;)”这种东西是没有办法出现的。
在MPLABX开发环境下,XC8编译器,提示的是分号错误,这叫词法错误。
在eclipse开发环境下,java编译器,提示的错误不但包含分号,还有那个“1”也是错的。因为java的条件时true或者false。
结论:楼主的“for(;1;)”有
词法
问题!
至于大家说的无限循环,完全符合
语法
,程序员会写到这句话时,就表明他的
语义
也正确了,谁没写过whle(1)!
赞
1
评论
回复
支持
1
反对
0
watershade
回答时间:2016-3-4 15:13:54
a0a.1 32b0c
本帖最后由 watershade 于 2016-3-4 15:39 编辑
另外各位都说语法有错误,经过编译,没有问题。我是在VS的命令行里面编译的:
int main(int argc, char const *argv[])
{
/* code */
for(;1;){
printf("nihao\r\n");
break;
}
printf("Hello\r\n");
return 0;
}
复制代码
编译通过
for( ;1 ;)的更简化版本是for(;;)
表示无限循环。相当于while(1)
赞
0
评论
回复
支持
反对
ersha4877
回答时间:2016-3-4 08:54:09
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
lisingch
回答时间:2016-3-4 08:57:24
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
周玄尊
回答时间:2016-3-4 08:58:14
a0a.1 32b0c
等于for(;;),死循环
赞
0
评论
回复
支持
反对
anny
回答时间:2016-3-4 08:59:59
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
MouseCat
回答时间:2016-3-4 09:00:12
a0a.1 32b0c
【3.4签到】
赞
0
评论
回复
支持
反对
zhangdaijin
回答时间:2016-3-4 09:00:14
a0a.1 32b0c
签到
赞
0
评论
回复
支持
反对
Mandelbrot_Set
回答时间:2016-3-4 09:03:25
a1024a.1 32b0c
forever
{
}
赞
0
评论
回复
支持
反对
worldzxw
回答时间:2016-3-4 09:03:30
a1024a.1 32b0c
签到来了
赞
0
评论
回复
支持
反对
creep
回答时间:2016-3-4 09:07:08
a0a.1 32b0c
赞
0
评论
回复
支持
反对
wtliu
回答时间:2016-3-4 09:11:16
a0a.1 32b0c
无限循环,签到!
赞
0
评论
回复
支持
反对
zhoupxa
回答时间:2016-3-4 09:12:07
a0a.1 32b0c
签到签到
这样写应该是无限循环(循环条件恒为真)
赞
0
评论
回复
支持
反对
wujianwei3980-5
回答时间:2016-3-4 09:12:58
a1024a.1 32b0c
签到。。。。。。。。。。。。
赞
0
评论
回复
支持
反对
ptiinngg
回答时间:2016-3-4 09:15:02
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
sting
回答时间:2016-3-4 09:17:56
a1024a.1 32b0c
死循环.....
赞
0
评论
回复
支持
反对
1
2
3
4
5
6
7
8
9
/ 9 页
下一页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
编程语言的描述一般可以分为语法及语义。
语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。
编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段。
词法分析器:输入源程序,进行词法分析,输出单词符号。
语法分析器:在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的“程序”。
中间代码生成器:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式。
优化:对中间代码进行优化处理。
目标代码生成器:把中间代码翻译成目标语言程序。
好了,说了那么多,那么,语句到底有什么问题呢?看下图
在uVision开发环境下,C51编译器,“for(;1;)”这种东西是没有办法出现的。
在MPLABX开发环境下,XC8编译器,提示的是分号错误,这叫词法错误。
在eclipse开发环境下,java编译器,提示的错误不但包含分号,还有那个“1”也是错的。因为java的条件时true或者false。
结论:楼主的“for(;1;)”有词法问题!
至于大家说的无限循环,完全符合语法,程序员会写到这句话时,就表明他的语义也正确了,谁没写过whle(1)!
另外各位都说语法有错误,经过编译,没有问题。我是在VS的命令行里面编译的:
for( ;1 ;)的更简化版本是for(;;)
表示无限循环。相当于while(1)
{
}
这样写应该是无限循环(循环条件恒为真)