请教个C语言基础问题

2019-07-21 00:12发布

本帖最后由 liuchang 于 2016-1-18 22:24 编辑

例如:
i[mw_shl_code=applescript,true]int temp = 0;
int add(int a,int b)
{
        return a+b;
}

int main()
{
        int a = 4;
        
        if((temp = add(2,3))>a)
        {
                ;
        }
}[/mw_shl_code]为什么代码执行完后,temp的值不是5,还是0啊?这个小弟理解不了~~~
换种表达方式,例如在
if(语句1)
或者
while(语句2)
请问语句1,语句2执行完判断以后,语句1和语句2是真的执行了吗?还是执行完判断以后恢复到初始值?为什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
liuchang
1楼-- · 2019-07-22 08:53
我按照4楼的程序在MDK上(使用stm32进行硬件仿真),跑出来是5,难道是我之前哪里出错了?
phmatthaus
2楼-- · 2019-07-22 11:40
 精彩回答 2  元偷偷看……
498678420@qq.co
3楼-- · 2019-07-22 12:52
#include"stdio.h"  int temp = 0; int c; int add(int a,int b) {          c = a+b;         return c; }   int main() {         int a = 4;                   if(add(2,3)>a)         {               printf("%d",c)  ;         } }楼主试试这么写
498678420@qq.co
4楼-- · 2019-07-22 16:16
[mw_shl_code=c,true]#include"stdio.h"

int temp = 0;
int c;
int add(int a,int b)
{
         c = a+b;
        return c;
}

int main()
{
        int a = 4;
         
        if(add(2,3)>a)
        {
              printf("%d",c)  ;
        }
}[/mw_shl_code]

这样看的比较清楚
三叶草
5楼-- · 2019-07-22 17:31
 精彩回答 2  元偷偷看……
jafree
6楼-- · 2019-07-22 20:13
不要写这种代码,要分开写,先赋值,再判断

一周热门 更多>