求絕對值,慎用C標準庫abs函式
C庫函式abs,宣告如下:
int abs(int n);
在32位程式中,
int的範圍是: -2147483648~2147483647
其中 -2147483648 的絕對值2147483648超過了int的表示範圍.
那麼: abs(-2147483648) == ?
大家不妨自己測試下.
如果宣告為:
unsigned int abs(int n);
那麼這個函式和其他int進行運算,則可能會將其自動轉換成unsigned int,
真是兩難的處境.
char, short, long 與此類似, 我們需要自己保證引數不是這個特殊值.
建議在處理的時候始終將結果轉換成unsigned, 來避免這個問題.
例如 unsigned int y = (unsigned int)abs(x);
相關推薦
求絕對值,慎用C標準庫abs函式
C庫函式abs,宣告如下: int abs(int n); 在32位程式中, int的範圍是: -2147483648~2147483647 其中 -2147483648 的絕對值2147483648超過了int的表示範圍. 那麼: abs(-2147483648) ==
C++標準庫常用函式彙總
<algorithm> 指令 排序 sort(vec.begin(),vec.end()) 反轉 reverse(str.begin(),s
ANSI C標準庫: 下函式講解
//time.t下的函式. #include <iostream> #include <time.h> #include <windows.h> #include &
C標準庫——字串處理函式string.h和wchar.h
string.h中包含了所有的字串處理函式,也包含了記憶體處理函式,因為這些記憶體處理函式(如比如、複製、搜尋)的功能與字串處理函式功能類似。我們是用通用指標來指向記憶體塊的,通用指標可以用char*型別(傳統C語言),也可以用void*型別(標準C語言)。每個函式都
C 和 C++ 的標準庫分別有自己的 locale 操作方法,C 標準庫的 locale 設定函式是 setlocale(),而 C++ 標準庫有 locale 類和流物件的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People
轉自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者說聲謝謝!若有讀者看到文章轉載時請寫該轉載地址,不要寫我的BLOG地址。尊重他人的勞動成果 ^_^ ] C 和 C++ 的標準庫分別有自己的
C++標準庫中排序函式sort的用法
(一)為什麼要用c++標準庫裡的排序函式 Sort()函式是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高! (二)c++標準庫裡的排序函式的使用方法 I)S
【C語言】標準庫字串函式整理
strcmp 字串比較 函式原型 extern int strcmp(const char *s1,const char *s2); 說明 C/C++函式,比較兩個字串 設這兩個字串為str1,str2, 若str1==str2,則返回零; 若str1<
C標準庫沒提供的助手函式:字串替換
/************************ (C) COPYRIGHT 2015 Gizwits **************************** * @file : strrpl.h * @author
使用C++標準庫sort自定義比較函式導致死迴圈問題
永遠讓比較函式對相等的值返回false(來自Effective C++) -------------------------------------------------------------------------------------------------
[C/C++標準庫]_[初級]_[如何實現std::string自己的Format(sprintf)函式]
場景:1. C語言有自己的sprintf函式,但是這個函式有個缺點,就是不知道需要建立多大的buffer, 這時候可以使用snprintf函式來計算大小,只要引數 buffer為NULL, count為0即可.2. 這裡實現std::string自己的sprintf也是用
逆序儲存檔案(二)——使用c標準庫函式fopen,fseek,fread,fwrite
使用c標準庫函式實現小檔案逆序儲存邏輯是: 1.用fopen函式成功開啟原始檔和目標檔案,原始檔用只讀方式(r)開啟,目標檔案用追加寫入(a)的方式開啟; 2.迴圈使用fseek定位檔案指標(fopen的返回值),從SEEK_END(檔案末尾)位置開始,每次多向前偏移一個位
C標準庫中的快速排序(quick-sort)函式 [簡單應用]
#include <iostream> #include <cstdlib> using namespace std; const size_t INDEX_ZERO = 0; int com(const void *a,const void *
C標準庫pow函數精度問題。
一般來說 nbsp any pre 4.5 logs urn padding signed #include <stdio.h> int main () { int temp,i; double a=2.4568; unsigned char b[5]
C標準庫stdlib.h概況
庫函數 字符常量 函數返回 表示 size_t 字節 max size 字符集 庫變量 size_t 這是無符號整數類型,它是 sizeof 關鍵字的結果 wchar_t 這是一個寬字符常量大小的整數類型。 div_t 這是 div 函數返回的結構 ldiv_t 這
C++標準庫算法
fill acc bsp c++ count nbsp size count() style 一、只讀算法 1. find() 2. count() 3. accumulate 4. equal 二、寫入算法 1. fill 2. fill_nC++標準庫算法
C++標準庫
補充 ref idt 例如 cat bool 操縱程序 nta 取余 C++標準庫 C++標準庫和標準模版庫在線資料查詢網址: http://en.cppreference.com/w/ 或者 http://www.cplusplus.com/ C+
C 標準庫 - string.h之strncpy使用
填充 reat 函數 clas != count imu serve uno strncpy 把 src 所指向的字符串復制到 dest,最多復制 n 個字符。當 src 的長度小於 n 時,dest 的剩余部分將用空字節填充。 char *strncpy(char
C 標準庫 - string.h之strcat使用
www. href 產生 rmi put for turned med main strcat Appends a copy of the source string to the destination string. The terminating null cha
C 標準庫 - string.h之strlen使用
rac ati oob [] mine eat including 定義 mina strlen Returns the length of the C string str. The length of a C string is determined by the
C 標準庫 - string.h之memcpy使用
uno over character copies www. zhang 別名 .com val memcpy Copy block of memory Copies the values of num bytes from the location pointed t