找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2238|回復: 10
收起左側

關于C語言自加++代碼的疑惑

[復制鏈接]
ID:997026 發(fā)表于 2022-3-25 14:21 | 顯示全部樓層 |閱讀模式
如下的程序,只要state_flag=1為真,state_cnt就從0開始自加. 想知道如果此時state為真,state_cnt=5,此時是state_cnt一直就等于5了,停止自加了,還是state_cnt當前的值被賦為5,然后從5為初值繼續(xù)開始自加??

unsigned int  state_cnt=0;
unsigned char  state_flag=1;
unsigned char  state=0;

int main(void)
{
state_flag=1;
while(1)
{
  ;
}


ISR_(timer_vect)  //定時器中斷,1s進一次中斷
{
   if (state_flag==1)
   {
      state_cnt ++;
      if(state)
       {
         state_cnt=5;
       }
   }
}
回復

使用道具 舉報

ID:883242 發(fā)表于 2022-3-25 14:59 | 顯示全部樓層
代碼不全,無法判別。
回復

使用道具 舉報

ID:584814 發(fā)表于 2022-3-25 15:03 | 顯示全部樓層
樓主想多了。
上面的程序是編譯不過去的
回復

使用道具 舉報

ID:879348 發(fā)表于 2022-3-25 15:41 | 顯示全部樓層
這不很簡單嗎,在5和6不停變
回復

使用道具 舉報

ID:997026 發(fā)表于 2022-3-25 15:51 | 顯示全部樓層
man1234567 發(fā)表于 2022-3-25 15:03
樓主想多了。
上面的程序是編譯不過去的

上面的 程序只是個框架,別糾結是否能否編譯,沒必要把所有給出來,我的重點在于是否自加,是在討論邏輯問題
回復

使用道具 舉報

ID:997026 發(fā)表于 2022-3-25 15:52 | 顯示全部樓層
wufa1986 發(fā)表于 2022-3-25 15:41
這不很簡單嗎,在5和6不停變

哪里來的6呢
回復

使用道具 舉報

ID:401564 發(fā)表于 2022-3-25 21:12 | 顯示全部樓層
對于i++和++i,網(wǎng)上書本上都有說明的
但我個人并不會太過于糾結這個,如果我實在不理解,那我就用i=i+1;這就可以了,我完全可以做到整個程序不會有++運算
像你這個,如果是我,我肯定不會發(fā)帖子問,如果要知道哪個變量的值等于多少,我會直接輸出到串口,后面加上一條while(1);
直接通過結果來驗證自己的推測
回復

使用道具 舉報

ID:896483 發(fā)表于 2022-3-25 22:11 | 顯示全部樓層
第一次是從0開始自加,執(zhí)行到if(state)為真時,重新賦值為5,到下次在執(zhí)行時,就是從5開始自加,再次執(zhí)行到if(state)為真時,又會重新賦值為5
回復

使用道具 舉報

ID:879348 發(fā)表于 2022-3-26 08:15 | 顯示全部樓層

等于5以后,下次再入中斷有一個機器周期時間是6,然后又等于5
回復

使用道具 舉報

ID:123289 發(fā)表于 2022-3-26 15:29 | 顯示全部樓層
程序是一步步執(zhí)行的。!
你一步步的走走,答案就有了。
糾結什么叫呢?
回復

使用道具 舉報

ID:584814 發(fā)表于 2022-3-27 22:17 | 顯示全部樓層
hxdby 發(fā)表于 2022-3-25 15:51
上面的 程序只是個框架,別糾結是否能否編譯,沒必要把所有給出來,我的重點在于是否自加,是在討論邏輯 ...

如果主程序不少括號,且定時器可以正常工作的話,按你的程序執(zhí)行那個值永遠是不變的。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表