c語言順序
㈠ c語言 運算順序 取余先後的順序
您好,很高興回答您的問題。
c語言中,各種運算符都是有先後順序的。取余運算的優先順序別和乘除是同一個級別,都是高於加減運算級別。並且是從左至右開始進行運算的。
㈡ c語言順序問題
else if(n=0)
改成
else if(n==0)
㈢ C語言運算順序
1 :: 左
2 . -> [] () 左
3 ++ -- ~ ! - + & * () sizeof new delete castname_cast<type> 單目操作符 右
4 .* ->* 左
5 * / % 左
6 + - 左
7 << >> 左
8 < <= > >= 左
9 == != 左
10 & 左
11 ^ 左
12 | 左
13 && 左
14 || 左
15 ?: 右
16 = *= /= %= += -= <<= >>= &= |= ^= 右
17 throw 左
18 , 左
希望對你有用
㈣ C語言怎麼順序輸出各位數字啊
其實輸出的是正整數,但是你要把他當做字元串來處理,因為後面的輸出的方式就是字元串輸出的方式,所以不妨把這個連續數字的東西當做一個字元串來處理,這樣比較容易。代碼如下:
#include <stdio.h>
#include<stdlib.h>
int main()
{
char n[100];
int i;
printf("enter a number:");
i=0;
while(1)
{
n[i]=getchar();
if (n[i]=='\n')break;
printf("%s ",n[i]); //注意裡面有個空格,達到了空一格格的目的
i++;
}
}
㈤ c語言中運算符有哪幾種,優先順序順序是怎樣
C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。
運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(5)c語言順序擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
㈥ C語言邏輯運算符順序是什麼
LS,貌似&&的優先順序比||大 = 賦值語句結合性 自右相左
a=b=c=1;等價於 c = 1;b = c; a = b;
-------------------------
看了sunnyapi的回答我感覺有必要
對以上回答進行一點補充
首先聲明 ||和&&運算符均屬於短路運算符;
什麼是短路運算符舉個簡單例子
若 a = 1; a||a++;運行後結果是什麼,變數a值為多少?
||邏輯或對第一項a進行判斷是否為0,若不為零則返回值為1;且不在進行後面的a++運算,這就是短路運算符的特性,這樣一來,a的值還是1沒有改變,同理 a =0; 0&&a++;的運行結果為a=0;
舉個形象點的例子:
a=1 a就是真
b=0 b就是假
a||a-- 真||a++,既然已經有真的了就沒必要再判斷a--是否為真 1||a++;肯定是真的;
同理 b&&b++ ,假&&b--既然已經有假的了就沒有必要判斷b++真假,同時b++也就不會被執行
++a||++b&&++c;這個語句根據算數運算符的優先順序關系 &&的優先順序比||大 『可以這樣理解』
所以先運行對++a||++b 和 ++c進行邏輯與(&&)運算,並先判斷++a||++b是否為假若假則不進行++c;在判斷 ++a||++b 是否為真的過程中,進行了++a和++b的||(邏輯或)運算,在邏輯或運算中先判斷++a是否為零,這個過程中相當於 先a=a+1;再if (a!=0) 因為前面a=1,再運行++a,a這時等於2所以在if (a!=0) 成立則,不會運行++b;
所以
運行結果為a =2 ,b=c=1;
再程序執行++a||++b&&++c;這條語句的過程中只有a變數的值發生改變,而不是樓下說的那樣
「在執行「++a||++b&&++c;」語句之前完成自加運算」 這是錯的·
上述方法只是為了幫助你理解這個++a||++b&&++c;語句的意思
若我寫個a=b=c=1; ++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;你說該怎麼理解?
挨個分析優先順序,?
那不得瘋了
所以那樣也沒必要++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;只要由左到右依次運行這樣來判斷就好了就是(++a )語句1|| (++b&&++c||++a||++b&&++c||++a||++b&&++c)語句2
(++a)==2!=0所以嘛,語句2就不執行了 這樣判斷也符合 該語句的執行順序
㈦ C語言 順序選擇結構
ADDAD
CCCBA
僅供參考
㈧ C語言運行順序
void Check(int p[])
{
int i,j;
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(abs(p[j]-p[i])==j-i)
return;
}
}
for(i=0;i<N;i++)
{
printf("%d",p[i]);
}
printf("\n");
}
加括弧如上,最好加括弧。
不加括弧只對下一個語句塊有效。比如第一個for只對第二個for有效,第二個for只對下一個if有效,第三個for只對下面的第一個printf有效。
㈨ C語言的運算優先順序
c語言運算符號
1級優先順序 左結合
() 圓括弧
[] 下標運算符
-> 指向結構體成員運算符
. 結構體成員運算符
2級優先順序 右結合
! 邏輯非運算符
~ 按位取反運算符
++ 自增運算符
-- 自減運算符
- 負號運算符
(類型) 類型轉換運算符
* 指針運算符
& 地址與運算符
sizeof 長度運算符
3級優先順序 左結合
* 乘法運算符
/ 除法運算符
% 取余運算符
4級優先順序 左結合
+ 加法運算符
- 減法運算符
5級優先順序 左結合
<< 左移運算符
>> 右移運算符
6級優先順序 左結合
<、<=、>、>= 關系運算符
7級優先順序 左結合
== 等於運算符
!= 不等於運算符
8級優先順序 左結合
& 按位與運算符
9級優先順序 左結合
^ 按位異或運算符
10級優先順序 左結合
| 按位或運算符
11級優先順序 左結合
&& 邏輯與運算符
12級優先順序 左結合
|| 邏輯或運算符
13級優先順序 右結合
? : 條件運算符
14級優先順序 右結合
= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算符
15級優先順序 左結合
, 逗號運算符
㈩ c語言 順序表 排序
///是不是要這樣,
#include
#define
MAXSIZE
10
//
待排順序表最大長度
typedef
int
KeyType;
//
關鍵字類型為整數類型
typedef
struct
sqlist
{
KeyType
r[MAXSIZE+1];
//
r[0]閑置
int
length;
//
順序表長度
}SqList;
//建立順序表//
SqList
InputSList()
{int
x;SqList
L;
L.length=0;
printf("\n請輸入數據,結束輸入-1!\n");
scanf("%d",&x);
while(x!=-1)
{
L.r[++L.length]=x;
if(L.length==MAXSIZE)
{
printf("\n順序表已滿!\n");
break;
}
scanf("%d",&x);
}
return
L;
}
//直接插入排序//
void
InsertionSort
(SqList
*L
)
{
//
對順序表
L
作直接插入排序。
int
i,j;
SqList
*p=L;
for
(
i=2;
ilength;
++i
)
if
(p->r[i]
<
p->r[i-1])
{
p->r[0]
=
p->r[i];
p->r[i]=p->r[i-1];
for
(
j=i-2;
p->r[0]
<
p->r[j];
--
j
)
p->r[j+1]
=
p->r[j];
//
記錄後移
p->r[j+1]
=
p->r[0];
//
插入到正確位置
}
}
//冒泡排序//
void
BubbleSort(SqList
*L)
{
int
i,j,t;
SqList
*p=L;
for
(i=p->length;i>1;--i){
for
(j=1;j<i;++j)
if
(p->r[j+1]r[j]){
t=p->r[j+1];
p->r[j+1]=p->r[j];
p->r[j]=t;
}
}
}
//簡單選擇排序//
void
SelectSort
(SqList
*L
)
{
SqList
*p=L;
int
i,
j,
k;
KeyType
temp;
for
(i=1;
ilength;
++i)
{
k=i;
for
(j=i+1;
jlength;
j++)
if
(p->r[j]r
[k])
k=j;
if
(k!=i)
{temp=p->r
[i];
p->r
[i]=p->r
[k];
p->r
[k]=temp;
}
}
}
void
display(SqList
*L)
{
SqList
*p;
p=L;
if
(p->length!=0)
{
while(p->length)
{
printf("%d
",p->r[p->length]);
p->length--;
}
}
printf("\n");
}
void
main()
{
SqList
L;
L=InputSList();
InsertionSort
(&L);
//
SelectSort
(&L)
;
//
BubbleSort(&L);
display(&L);
}