C++學習筆記八:極限和數學運算<limits><cmath>

来源:https://www.cnblogs.com/zspaiprogram/archive/2023/12/12/17897507.html
-Advertisement-
Play Games

背景 公司的海外業務需要將雲上的操作讀取到內部的日誌文件中,永久保存,供內部審計使用。 由於之前沒有用過AWS相關的SDK,在使用過程中也遇到一些困難,這裡記錄一下,並且總結一下過程。 代碼 快速開始 代碼參考地址:https://github.com/awsdocs/aws-doc-sdk-exa ...


1) <limits>庫:

1.1 源文檔:

https://en.cppreference.com/w/cpp/types/numeric_limits

#include <limits>

 

1.2 庫函數:

函數解釋:

對於一個浮點數,lowest表示最小的可表示的負數,min表示最小的可表示的接近0的數,max表示最大的可表示的正數

對於一個有符號整數,min表示可以表示的最小的負數,max表示可以表示的最大的證書

std::cout << "The range for short is from " << std::numeric_limits<short>::min() << " to " 
    << std::numeric_limits<short>::max() << std::endl;
std::cout << "The range for unsigned short is from " << std::numeric_limits<unsigned short>::min() << " to " 
    << std::numeric_limits<unsigned short>::max() << std::endl;
std::cout << "The range for int is from " << std::numeric_limits<int>::min() << " to " 
    << std::numeric_limits<int>::max() << std::endl;
std::cout << "The range for unsigned int is from " << std::numeric_limits<unsigned int>::min() << " to " 
    << std::numeric_limits<unsigned int>::max() << std::endl;
std::cout << "The range for long is from " << std::numeric_limits<long>::min() << " to " 
    << std::numeric_limits<long>::max() << std::endl;
std::cout << "The range for float is from " << std::numeric_limits<float>::min() << " to " 
    << std::numeric_limits<float>::max() << std::endl;
std::cout << "The range(with lowest) for float is from " << std::numeric_limits<float>::lowest() << " to " 
    << std::numeric_limits<float>::max() << std::endl;
std::cout << "The range(with lowest) for double is from " << std::numeric_limits<double>::lowest() << " to " 
    << std::numeric_limits<double>::max() << std::endl;
std::cout << "The range(with lowest) for long double is from " << std::numeric_limits<long double>::lowest() << " to " 
    << std::numeric_limits<long double>::max() << std::endl;

//Other facilities
//More info : https://en.cppreference.com/w/cpp/types/numeric_limits
std::cout << "int is signed : " << std::numeric_limits<int>::is_signed << std::endl;
std::cout << "int digits : " << std::numeric_limits<int>::digits << std::endl; //digits is the number of digits in base-radix that can be represented by the type T without change. For integer types, this is the number of bits not counting the sign bit and the padding bits

輸出結果:

The range for short is from -32768 to 32767
The range for unsigned short is from 0 to 65535
The range for int is from -2147483648 to 2147483647
The range for float is from 1.17549e-38 to 3.40282e+38
The range(with lowest) for float is from -3.40282e+38 to 3.40282e+38
The range(with lowest) for double is from -1.79769e+308 to 1.79769e+308      
The range(with lowest) for long double is from -1.18973e+4932 to 1.18973e+4932
int is signed : 1
int digits : 31

 

2)<cmath>庫

2.1 源文檔:

#include <cmath>

https://en.cppreference.com/w/cpp/header/cmath

 

2.2 部分庫函數:

std::abs(a): 絕對值

std::exp(a): e的乘方

std::pow(a,b): a的b次方

std::log(a): e的對數

std::log10(a): 10的對數

std::sqrt(a): 開平方根

std::round(a): 四捨五入

三角函數(單位是弧度制):sin(), sinf(float num), sinl(long double number)

 

2.3 對char類型和short int類型的數學計算:

編譯器無法處理小於4bytes的數據的計算,char類型占據1 Byte,short int類型占據2 Bytes, 在進行運算時會自動轉換為int類型

short int var1 {10}; // 2 bytes
short int var2 {20};

char var3 {40}; //1
char var4 {50};

std::cout << "size of var1 : " << sizeof(var1) << std::endl;
std::cout << "size of var2 : " << sizeof(var2) << std::endl;
std::cout << "size of var3 : " << sizeof(var3) << std::endl;
std::cout << "size of var4 : " << sizeof(var4) << std::endl;

auto result1 = var1 + var2 ;
auto result2 = var3 + var4;

std::cout << "size of result1 : " << sizeof(result1) << std::endl; // 4
std::cout << "size of result2 : " << sizeof(result2) << std::endl; // 4

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文並不是介紹如何將一個網頁配置成離線應用並支持安裝下載的。研究PWA的目的僅僅是為了保證用戶的資源可以直接從本地載入,來忽略全國或者全球網路質量對頁面載入速度造成影響。當然,如果頁面上所需的資源,除了資源文件外並不需要任何的網路請求,那它除了不支持**安裝到桌面**,已經算是一個離線應用了。 ...
  • static:靜態定位(預設)。依據文檔流定位。 relative:相對定位。以自身為基準,設置坐標(left、top、right、bottom),不脫離文檔流。 absolute:絕對定位。以父元素為基準,設置坐標(left、top、right、bottom),脫離文檔流。 fixed:固定定位。... ...
  • 介紹 在使用nest創建項目時,預設使用webpack進行打包,有時候啟動項目需要1-2分鐘。所以希望採用vite進行快速啟動項目進行開發。 本文主要使用NestJs、Vite和swc進行配置。文章實操較多,概念性的東西可訪問對應的官方文檔進行瞭解。tips: 個人認為概念性的東西,在文章中指出。對 ...
  • 面向對象編程是一種強大而靈活的編程範式,它可以幫助我們更好地組織和管理代碼,提高代碼的可讀性和可維護性,這使得它特別適合用在大型工程項目中。然而,我們也需要註意其可能帶來的問題,尤其是在併發和複雜系統中。 ...
  • 背景及問題: 在與硬體打交道時,經常需要知道當前設備連接的硬體信息,以便連接正確的硬體,比如串口通訊查詢連接的硬體及埠,一般手工的方式就是去設備管理器查看相應的信息,應用程式如何讀取這一部分信息呢,Windows下的SetupAPI系列就可以解決這個問題 示常式序 #include<Windows ...
  • C 語言中的函數聲明和定義 您可以通過以下方式創建並調用函數: // 創建一個函數 void myFunction() { printf("我剛被執行了!"); } int main() { myFunction(); // 調用函數 return 0; } 一個函數包括兩個部分: 聲明:函數名稱、 ...
  • 寫在前面 最近看到稀土掘金在搞2023年終總結徵文活動,一直想嘗試投稿試試,周末我就花了近一下午時間寫完初稿,然後周一、周二完成精讀再改稿,感覺OK,昨晚凌晨第一時間在稀土掘金投稿。 結果,又發生了同樣的事情。 同樣的文章,在博客園上、公號上閱讀量很OK,在稀土掘金上就上不來。 這應該是我博客園第四 ...
  • 從0到1,手把手帶你使用QT的qInstallMessageHandler函數結合qDebug,qInfo實現自定義的日誌系統,支持輸出日誌到文件和控制台,支持自動檢測日誌文件大小,支持自動更新日誌文件修改日期,自動備份,自動刪除一個月前的日誌文件,支持多線程程式, 支持擴展,可輸出日誌到資料庫,網... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...