你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
什么也不管说,什么也不敢问
[复制链接]
tanic
提问时间:2019-5-18 10:23 /
问答
是否解决:
void main()
{
uint32_t t1=5,t2=10;
uint8_t i,t3=0,t4=0;
for(i=0;i<10;i++)
{
if(t1*+i < t2)//不报错 知识盲区了
{
t3++;
}
else
{
t4++;
}
}
printf("t3=%d,t4=%d",t3,t4);
while(1);
}
赞
0
收藏
0
评论
8
分享
发布时间:2019-5-18 10:23
举报
请先
登录
后回复
8个回答
与龙共舞
回答时间:2019-5-18 14:24:32
a0a.1 32b0c
t1*i < == > t1*+i
赞
1
评论
回复
支持
1
反对
0
edmundlee
回答时间:2019-5-18 14:53:35
a0a.1 32b0c
我用V6的编译器是会发警告
是不是你把警告屏蔽了?
赞
0
评论
回复
支持
反对
kstwork
回答时间:2019-5-18 18:51:10
a0a.1 32b0c
keil 的默认编译器确实不会报错
赞
0
评论
回复
支持
反对
stm1024
回答时间:2019-5-18 20:48:16
a0a.1 32b0c
这个真的是有点奇怪,如果是*t+i还好理解一些
赞
0
评论
回复
支持
反对
radio2radio
回答时间:2019-5-18 22:02:01
a0a.1 32b0c
我试了一下,我的MDK,armcc v5,
把 t1*+i 里面的+号,当成了 i 的正负号。 换成负号,也不报错,结果变成t1乘负的i。
赞
0
评论
回复
支持
反对
fen1212
回答时间:2019-5-21 16:36:14
a0a.1 32b0c
会有警告的
赞
0
评论
回复
支持
反对
andeyqi
回答时间:2019-5-21 18:11:34
a0a.1 32b0c
反汇编看了下:
void main()
{
10420: e92d4800 push {fp, lr}
10424: e28db004 add fp, sp, #4
10428: e24dd010 sub sp, sp, #16
uint32_t t1=5,t2=10;
1042c: e3a03005 mov r3, #5
10430: e50b300c str r3, [fp, #-12]
10434: e3a0300a mov r3, #10
10438: e50b3010 str r3, [fp, #-16]
uint8_t i,t3=0,t4=0;
1043c: e3a03000 mov r3, #0
10440: e54b3006 strb r3, [fp, #-6]
10444: e3a03000 mov r3, #0
10448: e54b3007 strb r3, [fp, #-7]
for(i=0;i<10;i++)
1044c: e3a03000 mov r3, #0
10450: e54b3005 strb r3, [fp, #-5]
10454: ea00000f b 10498 <main+0x78>
{
if(t1*+i < t2)//不报错 知识盲区了
10458: e55b3005 ldrb r3, [fp, #-5]
1045c: e51b200c ldr r2, [fp, #-12]
10460: e0020392 mul r2, r2, r3
10464: e51b3010 ldr r3, [fp, #-16]
10468: e1520003 cmp r2, r3
1046c: 2a000003 bcs 10480 <main+0x60>
和1#楼 观点一致 t1*+i 等同 t1*i
赞
0
评论
回复
支持
反对
你若安好_清风徐来
回答时间:2019-5-27 10:55:57
a0a.1 32b0c
我觉得这样挺好的 哈哈哈哈 当正号处理估计写程序那个已经预料到这种情况了
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
t1*i < == > t1*+i
是不是你把警告屏蔽了?
把 t1*+i 里面的+号,当成了 i 的正负号。 换成负号,也不报错,结果变成t1乘负的i。
void main()
{
10420: e92d4800 push {fp, lr}
10424: e28db004 add fp, sp, #4
10428: e24dd010 sub sp, sp, #16
uint32_t t1=5,t2=10;
1042c: e3a03005 mov r3, #5
10430: e50b300c str r3, [fp, #-12]
10434: e3a0300a mov r3, #10
10438: e50b3010 str r3, [fp, #-16]
uint8_t i,t3=0,t4=0;
1043c: e3a03000 mov r3, #0
10440: e54b3006 strb r3, [fp, #-6]
10444: e3a03000 mov r3, #0
10448: e54b3007 strb r3, [fp, #-7]
for(i=0;i<10;i++)
1044c: e3a03000 mov r3, #0
10450: e54b3005 strb r3, [fp, #-5]
10454: ea00000f b 10498 <main+0x78>
{
if(t1*+i < t2)//不报错 知识盲区了
10458: e55b3005 ldrb r3, [fp, #-5]
1045c: e51b200c ldr r2, [fp, #-12]
10460: e0020392 mul r2, r2, r3
10464: e51b3010 ldr r3, [fp, #-16]
10468: e1520003 cmp r2, r3
1046c: 2a000003 bcs 10480 <main+0x60>
和1#楼 观点一致 t1*+i 等同 t1*i