當前位置:首頁 » 編程語言 » c語言括弧表達式的值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言括弧表達式的值

發布時間: 2022-09-18 06:48:32

1. c語言計算表達式的值

逗號運算符
左至右計算

表達式
值作

語句

先算a=3,
a賦值
3
算b=4,
b賦值
4
計算c=a+b
實際
c=3+4
c

7
終整條語句

c
值7.

2. C語言關於表達式求值

c語言有豐富的表達式,這是它的特點之一,表達式主要有4類,算術表達式,賦值表達式,逗號表達式,關系表達式
1.算術表達式就是包含算術運算符(如+
-
/
*
%等)的表達式(不是語句,後面沒有分號),如:a+b
,a%b,a+b-c*d,3+5等,算術表達式的值就是最後算出的結果,如3+5這個表達式的值就是8
2.賦值表達式,就是含有賦值運算符=的表達式,如a=5,b=3,c='a'等,=左邊的a,b,c稱為左值,必須為變數,=右邊的5,3,'a'稱為右值,必須為常量,賦值表達式的值為右值,如a=3的值為3,c='a'的值為字母a的ascii碼65(當然也可以認為它的值就是字母a)
3.逗號表達式就是含有逗號的表達式,形式:表達式1,表達式2,表達式3.......如a,b,c
3,5,7
a=3,b=4,c=6
3,a=5,b=6等
逗號表達式的值為,最右邊的表達式的值,如3,4,5的值就是5,表達式a=3,b=4,c=6的值就是表達式b=6的值,由上述分析知,表達式b=6的值就是6,所以表達式a=3,b=4,c=6的值就是6
4.關系表達式,指含有關系運算符(如>
<
>=
==
=<等)的表達式(其實也是算術表達式的一種)如a>b,a>6,6>5,3<2,4==6等,如果表達式的關系是正確的,那麼表達式的值為1,否則為0
如6>5正確,表達式的值為1,3<2,和4==6錯誤,表達式的值為0
當然可以細分為很多種表達式,不過主要也就是這幾種的變型,希望對你有所幫助

3. C語言(a=2,b=5,b++,a+b)這個括弧表達式的值怎麼算

(a=2,b=5,b++,a+b)這個叫逗號表達式,其值為最後一個表達式a+b的值8。

4. 用c語言寫帶括弧表達式求值的程序

//參考代碼
#include<stdio.h>
#include<string.h>

typedefintSElemType; //棧的元素類型

#defineSTACK_INIT_SIZE10 //存儲空間初始分配量
#defineSTACKINCREMENT2 //存儲空間分配增量

/*
*順序棧的結構體
**/
typedefstructSqStack
{
SElemType*base; //在棧構造之前和銷毀之後,base的值為NULL
SElemType*top; //棧頂指針
intstacksize; //當前已分配的存儲空間,以元素為單位
}SqStack;

/*
*構造一個棧
**/
intInitStack(SqStack*S)
{
//為棧底分配一個指定大小的存儲空間
(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!(*S).base)
exit(0); //存儲分配失敗
(*S).top=(*S).base; //棧底與棧頂相同表示一個空棧
(*S).stacksize=STACK_INIT_SIZE;
return1;
}

/*
*獲取棧頂元素
**/
intGetTop(SqStackS,SElemType*e)
{
if(S.top>S.base)
{
*e=*(S.top-1); //棧頂指針的下一個位置為棧頂元素
return1;
}
else
return0;
}

/*
*入棧(壓棧)
**/
intPush(SqStack*S,SElemTypee)
{
if((*S).top-(*S).base>=(*S).stacksize) //棧滿,追加存儲空間
{
(*S).base=(SElemType*)realloc((*S).base,
((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!(*S).base)
exit(0);//存儲分配失敗
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCREMENT;
}
*((*S).top)++=e;
//這個等式的++*優先順序相同,但是它們的運算方式,是自右向左
return1;
}

/*
*出棧
**/
intPop(SqStack*S,SElemType*e)
{
if((*S).top==(*S).base)
return0;
*e=*--(*S).top;
//這個等式的++*優先順序相同,但是它們的運算方式,是自右向左
return1;
}

/*
*判斷優先順序
**/
SElemTypePrecede(SElemTypet1,SElemTypet2)
{
SElemTypef;
switch(t2)
{
case'+':
case'-':
if(t1=='('||t1=='#')
f='<';
else
f='>';
break;
case'*':
case'/':
if(t1=='*'||t1=='/'||t1==')')
f='>';
else
f='<';
break;
case'(':
if(t1==')')
{
printf(ERROR1
);
exit(0);
}
else
f='<';
break;
case')':
switch(t1)
{
case'(':
f='=';
break;
case'#':
printf(ERROR2
);
exit(0);
default:
f='>';
}
break;
case'#':
switch(t1)
{
case'#':
f='=';
break;
case'(':
printf(ERROR3
);
exit(0);
default:
f='>';
}
}
returnf;
}

/*
*搜索運算符
**/
intIn(SElemTypec)
{
switch(c)
{
case'+':
case'-':
case'*':
case'/':
case'(':
case')':
case'#':return1;
default:return0;
}
}

/*
*運算
**/
SElemTypeOperate(SElemTypea,SElemTypetheta,SElemTypeb)
{
SElemTypec;
a=a-48; //ASCII值轉化為對應的十進制值
b=b-48; //ASCII值轉化為對應的十進制值

switch(theta)
{
case'+':
c=a+b+48;
break;
case'-':
c=a-b+48;
break;
case'*':
c=a*b+48;
break;
case'/':c=a/b+48;
}
returnc;
}

/*
*比較運算符優先順序
**/
SElemTypeEvaluateExpression()
{
SqStackOPTR,OPND;
SElemTypea,b,c,x,theta;
InitStack(&OPTR);
Push(&OPTR,'#');
InitStack(&OPND);
c=getchar();
GetTop(OPTR,&x);
while(c!='#'||x!='#')
{
if(In(c))//是7種運算符之一
switch(Precede(x,c))
{
case'<':
Push(&OPTR,c);//棧頂元素優先權低
c=getchar();
break;
case'=':
Pop(&OPTR,&x);//脫括弧並接收下一字元
c=getchar();
break;
case'>':
Pop(&OPTR,&theta);//退棧並將運算結果入棧
Pop(&OPND,&b);
Pop(&OPND,&a);
Push(&OPND,Operate(a,theta,b));
break;
}
elseif(c>='0'&&c<='9')//c是操作數
{
Push(&OPND,c);
c=getchar();
}
else //c是非法字元
{
printf(非法字元!!
);
exit(0);
}

GetTop(OPTR,&x);
}
GetTop(OPND,&x);
returnx;
}

intmain()
{
printf(請輸入算術表達式,並以#結束);
printf("%d",EvaluateExpression());
return0;
}

5. 求編程大俠解答!一個C語言逗號表達式和括弧的問題

逗號很好辦,逗號就是單純分隔兩個式子,括弧的主要作用是將括弧內的運算式子作為一個整體,也有優先運算的含義(這個含義和數學上是一樣的)
對於你的這段程序,首先說b,原式是(b=4*5, b*2), b+6

首先計算b=4*5,此時b=20,然後算逗號後的式子就是b*2,注意這里沒有說把結果賦值給b,所以b還是等於20,最後的b+6同理,只是計算了一個式子,並沒有保存結果,所以b最後的輸出為20;

再說a,輸出的式子是一個括弧,這是一個整體,式子裡面首先計算a=3*5,所以a=15,然後計算a*4,同樣沒有被保存,a還是15,最後計算a+5,這個時候還是沒有賦值,所以a=15。但是由於在同一個括弧里有2個逗號分開了3個式子,所以括弧這個整體的值由最後一個式子決定,最後一個式子的值是a+5,也就是15+5,所以括弧這個整體的值是20,輸入為20。

6. C語言中的括弧運算

理論上來說

增加括弧只會增加編譯的時間 並且對運行的時間是沒有差別的

也就是增加了把你從c/c++代碼變成exe的時間,但是不會影響exe運行的時間

而且 增加一兩個括弧 對於計算機編譯時間的影響是微乎其微的

計算機一秒計算數量以億算 怎麼會差這一個括弧呢

關於代碼運行效率 更應該注意的是演算法,而不是這些語句 那個才能從本質上提高程序運行效率

多行的代碼 運行效率就不一定比單行的要低

作為源代碼重要的一是演算法 二是可讀性 增加括弧和增加有必要的換行不但不會降低運行效率,反而會使代碼更加容易理解 減少歧義的產生

7. c語言 圓括弧用法 賦值 a=(1,2);printf(「%d」,a);什麼意思

圓括弧有較高的優先順序,一般先執行圓括弧內的代碼
(1,2)是一個逗號表達式,逗號表達式的值=最後一個值,前面的操作按順序執行
a=(1,2)顯然a=2

8. C語言(a=2,b=5,b++,a+b)這個括弧表達式的值怎麼算

(a=2,b=5,b++,a+b)這個叫逗號表達式,其值為最後一個表達式a+b的值8.

9. C語言中括弧運算符的問題

哈哈,你這是一個逗號表達式。
它將以逗號為界,從左到右依次計算每個表達式的值,最後返回最右邊的表達式的值。
阿明白??

10. c語言中的括弧表達式

括弧表達式計算順序是從左到右,然後整個表達式返回的是最右邊表達式的值,如第一個表達式,先算最內層的括弧表達式的最左邊的值,再把其最右邊的值返回並賦值給b,所以b在此次運算之後變為3,之後b+2=5(但5隻是一個臨時值,b值還是3),之後15+b=18,並且這個值由於是最右的表達式會作為整個大括弧表達式的返回值,即b再一次被賦值為18,然後現計算b+=18得到36;
如此第二個就是-30吧,對了,賦值表達式是從右到左賦值的