C語言判斷大小端的兩種方法
首先,什么是大小端存儲方式?
- 大端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址中;
- 小端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位,,保存在內(nèi)存的高地址中。
方法一:使用強(qiáng)制類型轉(zhuǎn)換
int is_byteorder(int* p) { return *(char*)p;//強(qiáng)制類型轉(zhuǎn)換,將精度跳得更高一點(diǎn) } int main() { int n = 1; int ret = is_byteorder(&n); if (ret == 1) { printf("小端\n"); } else { printf("大端\n"); } return 0; }
方法二:利用聯(lián)合體數(shù)據(jù)存儲的特點(diǎn)
聯(lián)合體里面的數(shù)據(jù)會共用同一塊內(nèi)存,改變其中一個數(shù)據(jù)的值,其他數(shù)據(jù)的值可能也會隨之變化
int is_byteorder(int* p) { union un { //定義一個聯(lián)合體類型 int i; char c; }u; u.i = 1;//修改i的值,c的值也會隨之發(fā)生變化 return u.c; } int main() { int n = 2; int ret = is_byteorder(&n); if (ret == 1) { printf("小端\n"); } else { printf("大端\n"); } return 0; }
如果將 i 改為1,如果是小端存儲,就會將01存儲到 c 中,就會返回1
到此這篇關(guān)于C語言判斷大小端的兩種方法的文章就介紹到這了,更多相關(guān)C語言判斷大小端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中獲取進(jìn)程識別碼的相關(guān)函數(shù)
這篇文章主要介紹了C語言中獲取進(jìn)程識別碼的相關(guān)函數(shù),分別為getpid()函數(shù)和getppid()函數(shù)的使用,需要的朋友可以參考下2015-08-08C++字符數(shù)組、字符數(shù)組指針和string類
這篇文章主要介紹了C++字符數(shù)組、字符數(shù)組指針和string類,string是一個類而不是基本數(shù)據(jù)類型,數(shù)組不含有處理函數(shù),下面更多詳細(xì)內(nèi)容,需要的小伙伴可以參考下面文章2022-03-03簡單了解C語言中直接插入排序與直接選擇排序?qū)崿F(xiàn)
這篇文章主要介紹了C語言中直接插入排序與直接選擇排序?qū)崿F(xiàn),插入排序的基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù),需要的朋友可以參考下2016-03-03詳解_beginthreadex()創(chuàng)建線程
這篇文章主要介紹了詳解_beginthreadex()創(chuàng)建線程,使用_beginthreadex(),需要的頭文件支持#include <process.h> 下面我們就來看看具體的實現(xiàn)吧2022-01-01