Java與C語言中取模運算符%的區別對比


在這里插入圖片描述

博客主頁: [小????????]
本文專欄: Java

文章目錄

  • 💯前言
  • 💯C語言中的取模運算符 `%`
    • 基本行為
      • 示例
    • 注意事項
      • 示例:負數取模
  • 💯Java中的取模運算符 `%`
    • 基本行為
      • 示例
    • 對浮點數的支持
      • 示例:浮點數取模
    • 符號規則
      • 示例:負數取模
  • 💯C語言與Java中的 `%` 運算符的對比
    • 1. 支持的數據類型
    • 2. 負數余數的符號規則
    • 3. 浮點數支持
    • 4. 除法和取模的關系
  • 💯小結


💯前言

  • 在程序設計中,取模運算符 % 是非常常見的操作符,它用于計算兩個數字相除后的余數。不同的編程語言對取模運算符的實現和使用會有所不同,今天我們將通過對比Java和C語言中的 % 運算符,詳細了解它們在使用上的差異。
    取模運算符的一個常見用途是確定一個數是否能被另一個數整除,或者循環結構中限制一個數值的范圍等。在這篇文章中,我們將討論 % 運算符在Java和C語言中的行為,特別是它們在整數與浮點數類型上使用的不同。我們還會深入分析這兩種語言在實現和結果上的差異,幫助讀者更好地理解它們。
    Java
    在這里插入圖片描述

💯C語言中的取模運算符 %

基本行為

在C語言中,取模運算符 % 的主要功能是計算兩個整數相除后的余數。具體來說,a % b 表示 a 除以 b 后得到的余數。

示例

#include <stdio.h>int main() {int result = 10 % 3;  // 結果是 1,因為 10 除以 3 商為 3,余數為 1printf("10 %% 3 = %d
", result);return 0;
}

在這個示例中,10 % 3 的結果是 1,因為 10 除以 3 商為 3,余數為 1。

注意事項

  1. 整數類型限制: C語言的 % 運算符只能用于整數類型。嘗試對浮點數進行取模操作會導致編譯錯誤。例如,float a = 5.5 % 2.2; 在C語言中是無效的。

  2. 符號規則: C語言的取模運算符遵循與除法類似的符號規則。如果被除數為負,余數的符號將與被除數相同。也就是說,-10 % 3 的結果是 -1,而不是 2

示例:負數取模

#include <stdio.h>int main() {int result = -10 % 3;  // 結果是 -1printf("-10 %% 3 = %d
", result);return 0;
}

在這個例子中,-10 % 3 的結果是 -1,因為C語言的取模運算符遵循“余數的符號與被除數相同”的規則。

💯Java中的取模運算符 %

基本行為

Java中的 % 運算符與C語言中的運算符類似,但它不僅適用于整數類型(int, long 等),還可以用于浮點數類型(float, double)。這使得Java在使用 % 運算符時更加靈活,可以處理更多的場景。

示例

public class Main {public static void main(String[] args) {int result = 10 % 3;  // 結果是 1,因為 10 除以 3 商為 3,余數為 1System.out.println("10 % 3 = " + result);}
}

在這個Java示例中,10 % 3 的結果是 1,與C語言中的結果一致。

對浮點數的支持

Java特別之處在于它支持浮點數類型(floatdouble)的取模操作。當操作數是浮點數時,% 計算的是浮點數的余數,而不僅僅是整數余數。

示例:浮點數取模

public class Main {public static void main(String[] args) {double result = 10.5 % 3.2;  // 結果是 1.1System.out.println("10.5 % 3.2 = " + result);}
}

在這個例子中,10.5 % 3.2 的結果是 1.1。Java通過浮點數余數計算,返回了余數的正確值。

符號規則

與C語言類似,Java中的 % 運算符也會根據被除數的符號來決定余數的符號。重要的一點是,在Java中,% 運算符的結果是保持余數的符號與除數一致,而不是與被除數一致。

示例:負數取模

public class Main {public static void main(String[] args) {int result = -10 % 3;  // 結果是 -1,因為 Java 取模規則System.out.println("-10 % 3 = " + result);}
}

在這個Java示例中,-10 % 3 的結果是 -1,與C語言的符號規則相似。

💯C語言與Java中的 % 運算符的對比

1. 支持的數據類型

  • C語言% 運算符只支持整數類型(如 int, short, long 等)。嘗試對浮點數使用 % 運算符會導致編譯錯誤。

  • Java% 運算符既支持整數類型(如 int, long 等),也支持浮點數類型(如 float, double)。因此,Java的 % 運算符更加靈活,能夠處理更多的數據類型。

2. 負數余數的符號規則

  • C語言:當被除數為負數時,余數的符號與被除數相同。例如,-10 % 3 的結果是 -1

  • Java:Java與C語言類似,當被除數為負數時,余數的符號與被除數相同。例如,-10 % 3 的結果是 -1

3. 浮點數支持

  • C語言:不支持浮點數取模。% 運算符只適用于整數類型。

  • Java:支持浮點數取模。對于浮點數,Java計算的是浮點數余數,而不僅僅是整數余數。這使得Java在處理更復雜的數學運算時更加靈活。

4. 除法和取模的關系

取模運算與除法密切相關。對于整數來說,除法和取模運算是成對出現的,且除法結果和取模結果可以一起用于構建更復雜的數學運算。

  • C語言與Java:在這兩種語言中,除法和取模的行為基本一致。a % b 給出的是 a 除以 b 后的余數,而 a / b 給出的是商(向零取整)。

💯小結

通過對比C語言和Java中的 % 運算符,我們可以看到它們在使用上的一些關鍵差異。C語言的取模運算符只能用于整數類型,并且不支持浮點數取模。而Java的取模運算符則更為靈活,不僅支持整數類型,還支持浮點數類型。雖然兩者在負數余數符號規則上的處理相似,但Java提供了更多的操作選項,使得開發者在不同場景下能夠更方便地使用 % 運算符。

對于開發者來說,理解這兩種語言在取模運算符使用上的差異非常重要,尤其是在需要處理浮點數時,Java無疑提供了更多的靈活性和方便。因此,在實際編程中,正確理解和選擇適合的語言特性對于編寫高效、準確的程序至關重要。


在這里插入圖片描述


在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70214.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV機器學習(4)k-近鄰算法(k-Nearest Neighbors, KNN)cv::ml::KNearest類

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::ml::KNearest 是 OpenCV 機器學習模塊中的一部分&#xff0c;它提供了實現 k-近鄰算法&#xff08;k-Nearest Neighbors, KNN&#xff09;的…

過于依賴chatgpt編程會有哪些弊端?

過于依賴ChatGPT編程可能會帶來以下問題&#xff1a; 1. 基礎不扎實&#xff0c;容易“變菜” 以前遇到代碼還會琢磨哪里不懂、怎么改&#xff0c;現在直接復制粘貼&#xff0c;時間長了可能連基本的語法和邏輯都搞不清楚。就像考試總抄答案&#xff0c;真讓你自己寫的時候腦子…

紅隊視角出發的k8s敏感信息收集——Kubernetes API 擴展與未授權訪問

針對 Kubernetes 第三方組件與 Operator 的詳細攻擊視角分析&#xff0c;涵蓋 Service Mesh、Helm Releases 和 Database Operators 的潛在風險及利用方法。 攻擊鏈示例 1. 攻擊者通過未授權的 Tiller 服務部署惡意 Helm Chart → 2. 創建后門 Pod 并橫向移動至 Istio 控制平…

3D與2D機器視覺機械臂引導的區別

3D與2D機器視覺在機械臂引導中的主要區別如下&#xff1a; 數據維度 2D視覺&#xff1a;僅處理平面圖像&#xff0c;提供X、Y坐標信息&#xff0c;無法獲取深度&#xff08;Z軸&#xff09;數據。 3D視覺&#xff1a;處理三維空間數據&#xff0c;提供X、Y、Z坐標及物體的姿態…

日常開發中,使用JSON.stringify來實現深拷貝的坑

使用JSON.stringify的方式來實現深拷貝的弊端 弊端一&#xff1a;無法拷貝NaN、Infinity、undefined這類值 無法拷貝成功的原因&#xff1a; 對于JSON來說&#xff0c;它支持的數據類型只有null、string、number、boolean、Object、Array&#xff0c;所以對于它不支持的數據類…

AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率

在軟件測試中,AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率。以下是幾個具體的應用場景及對應的代碼實現示例: 1. 自動生成測試用例 AI大模型可以根據需求文檔或用戶故事自動生成測試用例。 代碼示例(使用 OpenAI GPT API): …

【Linux】Ubuntu Linux 系統——Node.js 開發環境

??大家好&#xff0c;我是練小杰&#xff0c;今天星期五了&#xff0c;同時也是2025年的情人節&#xff0c;今晚又是一個人的舉個爪子&#xff01;&#xff01; &#x1f642; 本文是有關Linux 操作系統中 Node.js 開發環境基礎知識&#xff0c;后續我將添加更多相關知識噢&a…

Dockerfile 編寫推薦

一、導讀 本文主要介紹在編寫 docker 鏡像的時候一些需要注意的事項和推薦的做法。 雖然 Dockerfile 簡化了鏡像構建的過程&#xff0c;并且把這個過程可以進行版本控制&#xff0c;但是不正當的 Dockerfile 使用也會導致很多問題。 docker 鏡像太大。如果你經常使用鏡像或者…

mysql 學習16 視圖,存儲過程,存儲函數,觸發器

視圖&#xff0c; 存儲過程&#xff0c; 存儲函數 觸發器

SpringBoot+Vue+數據可視化的動漫妝造服務平臺(程序+論文+講解+安裝+調試+售后等)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統介紹 在當今數字化高速發展的時代&#xff0c;動漫產業迎來了前所未有的繁榮&#xff0c;動漫…

rtsp rtmp 跟 http 區別

SDP 一SDP介紹 1. SDP的核心功能 會話描述&#xff1a;定義會話的名稱、創建者、時間范圍、連接地址等全局信息。媒體協商&#xff1a;明確媒體流的類型&#xff08;如音頻、視頻&#xff09;、傳輸協議&#xff08;如RTP/UDP&#xff09;、編碼格式&#xff08;如H.264、Op…

Containerd 簡介、安裝與使用指南

1. Containerd 簡介 Containerd 是一個開源的容器運行時&#xff0c;專注于管理容器的生命周期。它最初是 Docker 的一部分&#xff0c;后來被分離出來成為一個獨立的項目&#xff0c;并成為 Kubernetes 和其他容器平臺的底層運行時。Containerd 提供了容器的創建、啟動、停止…

開源語音克隆項目 OpenVoice V2 本地部署

#本機環境 WIN11 I5 GPU 4060ti 16G 內存 32G #開始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

【Prometheus】prometheus結合domain_exporter實現域名監控

?? 歡迎大家來到景天科技苑?? ???? 養成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。 ??《博客》:Python全…

rustdesk編譯修改名字

最近&#xff0c;我用Rust重寫了一個2W行C代碼的linux內核模塊。在此記錄一點經驗。我此前沒寫過內核模塊&#xff0c;認識比較疏淺&#xff0c;有錯誤歡迎指正。 為什么要重寫&#xff1f; 這個模塊2W行代碼量看起來不多&#xff0c;卻在線上時常故障&#xff0c;永遠改不完。…

在linux系統中安裝Anaconda,并使用conda

系統 : ubuntu20.04 顯卡&#xff1a;NVIDIA GTX1650 目錄 安裝Anaconda第一步&#xff1a;下載合適版本的Anconda1. 查看自己Linux的操作系統及架構命令&#xff1a;uname -a2. 下載合適版本的Anconda 第二步&#xff1a;安裝Aanconda1. 為.sh文件設置權限2. 執行.sh文件2.1 .…

(前端基礎)HTML(一)

前提 W3C:World Wide Web Consortium&#xff08;萬維網聯盟&#xff09; Web技術領域最權威和具有影響力的國際中立性技術標準機構 其中標準包括&#xff1a;機構化標準語言&#xff08;HTML、XML&#xff09; 表現標準語言&#xff08;CSS&#xff09; 行為標準&#xf…

【ISO 14229-1:2023 UDS診斷(會話控制0x10服務)測試用例CAPL代碼全解析③】

ISO 14229-1:2023 UDS診斷【會話控制0x10服務】_TestCase03 作者&#xff1a;車端域控測試工程師 更新日期&#xff1a;2025年02月15日 關鍵詞&#xff1a;UDS診斷、0x10服務、診斷會話控制、ECU測試、ISO 14229-1:2023 TC10-003測試用例 用例ID測試場景驗證要點參考條款預期…

TDengine 客戶端連接工具 taos-Cli

簡介工具獲取運行命令行參數 基礎參數高級參數 數據導出/導入 數據導出數據導入 執行 SQL 腳本使用小技巧 TAB 鍵自動補全設置字符列顯示寬度其它 錯誤代碼表 簡介 TDengine 命令行工具&#xff08;以下簡稱 TDengine CLI&#xff09;是用戶操作 TDengine 實例并與之交互最簡…

Git高級用法

GIT高級用法及實戰案例解析 前言 作為現代開發者的必備工具&#xff0c;Git的基礎操作&#xff08;add/commit/push&#xff09;早已深入人心。但當面對復雜場景時&#xff0c;掌握Git的高級用法將極大提升開發效率。本文將深入解析Git的高級功能&#xff0c;并配合真實場景案…