tanic 发表于 2019-5-18 10:23:05

什么也不管说,什么也不敢问

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);
}

与龙共舞 发表于 2019-5-18 14:24:32


t1*i    < == >t1*+i

edmundlee 发表于 2019-5-18 14:53:35

我用V6的编译器是会发警告
是不是你把警告屏蔽了?

kstwork 发表于 2019-5-18 18:51:10

keil 的默认编译器确实不会报错

stm1024 发表于 2019-5-18 20:48:16

这个真的是有点奇怪,如果是*t+i还好理解一些

radio2radio 发表于 2019-5-18 22:02:01

我试了一下,我的MDK,armcc v5,
把 t1*+i 里面的+号,当成了 i 的正负号。 换成负号,也不报错,结果变成t1乘负的i。

fen1212 发表于 2019-5-21 16:36:14

会有警告的

andeyqi 发表于 2019-5-21 18:11:34

反汇编看了下:
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,
   10434:        e3a0300a         mov        r3, #10
   10438:        e50b3010         str        r3,
      uint8_t i,t3=0,t4=0;
   1043c:        e3a03000         mov        r3, #0
   10440:        e54b3006         strb        r3,
   10444:        e3a03000         mov        r3, #0
   10448:        e54b3007         strb        r3,

      for(i=0;i<10;i++)
   1044c:        e3a03000         mov        r3, #0
   10450:        e54b3005         strb        r3,
   10454:        ea00000f         b        10498 <main+0x78>
      {
                if(t1*+i < t2)//不报错 知识盲区了
   10458:        e55b3005         ldrb        r3,
   1045c:        e51b200c         ldr        r2,
   10460:        e0020392         mul        r2, r2, r3
   10464:        e51b3010         ldr        r3,
   10468:        e1520003         cmp        r2, r3
   1046c:        2a000003         bcs        10480 <main+0x60>

和1#楼 观点一致 t1*+i 等同 t1*i

你若安好_清风徐来 发表于 2019-5-27 10:55:57

我觉得这样挺好的哈哈哈哈   当正号处理估计写程序那个已经预料到这种情况了
页: [1]
查看完整版本: 什么也不管说,什么也不敢问