今日遇到个来面试C的
今天遇到个来面试C的
于是我就无耻的让他写了一个大端小端的判断函数.....
然后我发现
我发现他代码写的太好了,于是我就问 这代码真是你写的 不是抄的?他说学习借鉴的,然后我决定,这种高手还是去别家吧 我们要不起....
代码如下
static union {
char c[4];
uint32_t mylong;
} endian_test = {{ 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong)
bool IsBigEndian()
{
if(ENDIANNESS=='l')
{
return false;
}
return true;
}
我真心看不懂,谁来解释下这是神马意思?
------解决方案--------------------
不懂就让走人,您这考官是不是有点。。。
------解决方案--------------------
如果 mylong的第一个字节是‘l’则为小端,没看出有什么问题。
------解决方案--------------------

------解决方案--------------------
没有必要搞这么复杂吧……
------解决方案--------------------
如果 lz 不是自娱以娱人,请google "联合体"
------解决方案--------------------
要是我的话果断这样呀:
------解决方案--------------------

------解决方案--------------------
------解决方案--------------------
楼主不用捣弄了,这是垃圾代码。
------解决方案--------------------
我还是觉得这样的好。
于是我就无耻的让他写了一个大端小端的判断函数.....
然后我发现
我发现他代码写的太好了,于是我就问 这代码真是你写的 不是抄的?他说学习借鉴的,然后我决定,这种高手还是去别家吧 我们要不起....
代码如下
static union {
char c[4];
uint32_t mylong;
} endian_test = {{ 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong)
bool IsBigEndian()
{
if(ENDIANNESS=='l')
{
return false;
}
return true;
}
我真心看不懂,谁来解释下这是神马意思?
------解决方案--------------------
不懂就让走人,您这考官是不是有点。。。
------解决方案--------------------
如果 mylong的第一个字节是‘l’则为小端,没看出有什么问题。
------解决方案--------------------
------解决方案--------------------
没有必要搞这么复杂吧……
------解决方案--------------------
如果 lz 不是自娱以娱人,请google "联合体"
------解决方案--------------------
要是我的话果断这样呀:
int isBigEndian()
{
short temp = 0xFF00;
return *((char*)&temp) == 0xFF;
}
------解决方案--------------------
------解决方案--------------------
#include <stdio.h>
int checkSytem()
{
union checkSytem
{
int i;
char ch;
}c;
c.i = 1;
return(c.ch == 1);
}
void main()
{
if (checkSytem() == 1)
{
printf("您的系统为小端模式!\n");
printf("高字节存储在在高地址,低字节存储在低地址,左边为高字节!\n");
}
else
{
printf("您的系统为大端模式!\n");
printf("高字节存储在在低地址,低字节存储在高地址,左边为高字节!\n");
}
}
------解决方案--------------------
楼主不用捣弄了,这是垃圾代码。
------解决方案--------------------
我还是觉得这样的好。