日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言—整除问题、求余、赋值、逻辑运算符易错点

發(fā)布時(shí)間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言—整除问题、求余、赋值、逻辑运算符易错点 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

🐨這一篇主要是講那些老師可能不會(huì)講,但是很多初學(xué)者都容易踩坑的地方
🤔 根據(jù)自己踩過的的坑整理了一下🤧

文章目錄

  • 前言
    • 一、整除問題
      • 1??第一種情況:整數(shù)相除,抹去小數(shù)位
      • 2??第二種情況:被除數(shù)<除數(shù),結(jié)果為0
      • 3??第三種情況:分子分母有一個(gè)為浮點(diǎn)數(shù),結(jié)果即為浮點(diǎn)數(shù)
    • 二、求余運(yùn)算
    • 三、賦值運(yùn)算
      • 1??復(fù)合賦值運(yùn)算:
      • 2??復(fù)合賦值運(yùn)算練習(xí):
    • 四、邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
  • 最后



想要bug少,細(xì)節(jié)注意不能少~👈(゚ヮ゚👈)

一、整除問題

1??第一種情況:整數(shù)相除,抹去小數(shù)位

示例: 9/2=4 -9/2=-4 #include <stdio.h>int main() {float a;a=9/2;printf("%f",a); }

#include <stdio.h>int main() {float a;a=-9/2;printf("%f",a); }


分析:上面兩個(gè)例子可看出在a已經(jīng)為浮點(diǎn)數(shù)float的情況下,a=9/2;和a=-9/2;等號(hào)后面的兩個(gè)整數(shù)在運(yùn)算完成后是按照int型來計(jì)算的,計(jì)算完成后的結(jié)過直接把小數(shù)位抹去,然后才賦值給a,轉(zhuǎn)化為float類型

2??第二種情況:被除數(shù)<除數(shù),結(jié)果為0

示例:1/2=0 #include <stdio.h>int main() {float a;a=1/2;printf("%f",a); }

3??第三種情況:分子分母有一個(gè)為浮點(diǎn)數(shù),結(jié)果即為浮點(diǎn)數(shù)

注意像示例2這種,分子或者分母有多個(gè)數(shù)的,只要有一個(gè)為浮點(diǎn)數(shù)即可

示例1:1.0/2=0.5 1/2.0=0.5

示例2:a,b,c為int型 a=(2.0*b) /c

如何避免整數(shù)相除損失精度:👈(゚ヮ゚👈)
1.直接將整數(shù)保留一位小數(shù)(使得分子或是分母為浮點(diǎn)數(shù)即可)

  • 示例1
#include <stdio.h>int main() {float a;a=1.0/2;printf("%f",a); }

#include <stdio.h>int main() {float a;a=1/2.0;printf("%f",a); }

  • 示例2
#include <stdio.h>int main() {float a;int b,c;scanf("%d%d",&b,&c);a=2.0*b/c;printf("%f",a); }

2.直接將分子或分母 強(qiáng)制轉(zhuǎn)換為 浮點(diǎn)數(shù)類型

強(qiáng)制轉(zhuǎn)換:(要轉(zhuǎn)換的類型)(要轉(zhuǎn)換的數(shù)) ——>如:(int)a 或(float)(a*b) 要轉(zhuǎn)換的數(shù)只有一個(gè)的時(shí)候,第二個(gè)括號(hào)可以省略

示例:int a,b,c; a=(float)(2b)/c 或 a=2b/(float)c

#include <stdio.h>int main() {float a;int b,c;scanf("%d%d",&b,&c);a=(float)(2*b)/c;printf("%f",a); }


二、求余運(yùn)算

1.該運(yùn)算只能作用于兩個(gè)整數(shù)的運(yùn)算,運(yùn)算結(jié)果是兩個(gè)整數(shù)的余數(shù),結(jié)果為整數(shù)。
2.運(yùn)算結(jié)果的符號(hào)與被除數(shù)的符號(hào)一致
5%2=1 -5%2=-1 5%-2=1
3.如果 被除數(shù) 小于 除數(shù) ,結(jié)果為被除數(shù)
2%9=2


三、賦值運(yùn)算

結(jié)合性:從右向左

賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換:
1.賦值后,左邊的值被右邊表達(dá)式的值替換
2.如果左右兩邊類型不一致,以左邊變量的類型為準(zhǔn),將表達(dá)式值的類型轉(zhuǎn)換為左邊變量的類型

1??復(fù)合賦值運(yùn)算:

  • 結(jié)合性:從右向左
  • 注意:兩個(gè)運(yùn)算符中間不要有空格

第一列是復(fù)合賦值運(yùn)算符,第二列分別等于其對應(yīng)的第三列

+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
%=a%=ba=a%b

2??復(fù)合賦值運(yùn)算練習(xí):

例題:設(shè)有如下變量定義,計(jì)算表達(dá)式y(tǒng)+=i-=j*=++x的值

int i=3,j=5;float x=2.5,y=5.0;

計(jì)算步驟:

  • 計(jì)算++x
    y+=i-=j*=++x

    ++x等價(jià)于x=x+1
    x=3.5

  • 計(jì)算j*=++x
    y+=i-=j*=++x

    經(jīng)過第一步計(jì)算變?yōu)?#xff1a;
    y+=i-=j*=x 此時(shí)x=3.5
    j=j*x
    等號(hào)右邊j * 3.5=17.5 賦值給左邊后:j=17
    (從右向左計(jì)算,因?yàn)閖為int類型,所以小數(shù)部分就被抹去了)

  • 計(jì)算i-=j*=++x

    經(jīng)過上一步計(jì)算變?yōu)?#xff1a;
    y+=i-=j
    i=i-j 此時(shí)j=17
    i=-14

  • 計(jì)算y+=i-=j*=++x
    y+=i-=j*=++x
    經(jīng)過上一步計(jì)算變?yōu)?
    y+=i 此時(shí)i=-14
    y=y+i
    y=-9.0
    y是double型的,結(jié)果由-9變?yōu)?9.0


四、邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性

  • 優(yōu)先級(jí):
    !大于&&大于||

  • 結(jié)合性:
    邏輯非,右結(jié)合
    邏輯與、邏輯或,左結(jié)合

運(yùn)算符的優(yōu)先級(jí):
!、++、- -、sizeof>算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>&&、||>賦值運(yùn)算符

問題:如何表達(dá)1<x<10?
1<x<10 ?
x>1&&x<1 ?


最后

(〒▽〒)由于本人能力有限以及是個(gè)小迷糊,如有錯(cuò)誤或是不妥的地方,麻煩各位及時(shí)指出,以免我誤導(dǎo)他人,多謝🥳

🕊?原創(chuàng)不易,希望各位大佬支持一下\textcolor{orange}{原創(chuàng)不易,希望各位大佬支持一下}創(chuàng)

👍點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!\textcolor{green}{點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!}點(diǎn)認(rèn)創(chuàng)動(dòng)

?? 收藏,你的青睞是我努力的方向!\textcolor{green}{收藏,你的青睞是我努力的方向!}

?? 評(píng)論,你的意見是我進(jìn)步的財(cái)富!\textcolor{green}{評(píng)論,你的意見是我進(jìn)步的財(cái)富!}評(píng)進(jìn)財(cái)

總結(jié)

以上是生活随笔為你收集整理的C语言—整除问题、求余、赋值、逻辑运算符易错点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。