今天笔试,几道小题。。
int x = (i=4,j=8,k=16);
x值是多少?
还有考转义字符的
'\\' '10l' '\' '\xf' 神马神马的, 问哪些对的,哪些错的。。。
void swap(int *a, int *b)
自己写这个函数,要考虑函数执行的时间和空间。
我又不知道哪种写法,最节省时间和空间的,就随便写了一种。。
[解决办法]
16吧
[解决办法]
x=16
[解决办法]
很简单的逗号表达式
[解决办法]
楼上几位都对
void swap(int *a, int *b)应该没有什么其他的算法,可以些为inline,实在不行写内联汇编,这样可以省去一个局部变量,缩减代码执行时间。
[解决办法]
第一题我还是做错了
以为=1呢
基本功不扎实啊
[解决办法]
第三题:
- C/C++ code
void swap(int *a, int *b){ *a ^= *b; *b ^= *a; *a ^= *b;}
[解决办法]
void swap(int *a, int *b)
{
*b = *a ^ *b;
*a = *a ^ *b;
*b = *a ^ *b;
}
[解决办法]
第一题:
int x = (i=4,j=8,k=16);
x = 16;
(i = 4,j = 8,k = 16)这是个逗号表达式,以该表达式的最后一个表达式最为整个逗号表达式的结果
[解决办法]
第三个我回答你,就是a,b互换的意识,这么写
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
这样就做到互换的目的了,不用申请空间,也是效率比较高的。
[解决办法]
'\' 这个转义字符是错误,不能通过编译的,其他是正确的
[解决办法]
第一题:
int x = (i=4,j=8,k=16);
(i = 4,j=8,k=16)这是个逗号表达式,以逗号表达式中的最后一个表达式作为整个逗号表达式的结果,
则 x = k = 16;
第二题:
'\\' '10l' '\' '\xf'
转义字符是以'\'开始的,后面跟一个字符或8进制或十六进制的数据
'\\'这个转义字符是正确的,用来打印 出'\'这个字符
'101' 这个转移字符是错误的,少了一个'\',修改为:'\101'其中101表示八进制数据
'\'这个转义字符是错误的,在'\'后面缺少字符或八进制的数据
'\xf'这个转义字符是正确的,'\xf'表示打印出十六进制是f的字符
第三题:
void swap(int *a, int *b)
自己写这个函数,要考虑函数执行的时间和空间。
所谓执行的空间,就是在这个函数中所用到的变量,包括静态分配和动态分配的内存,应尽可能少,最好的情况是没用其他的内存空间
执行的时间,就是CPU计算数据的速度,对于整形数据用位运算是计算数据比较快的。
则该函数的定义如下:
void swap(int *a,int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
[解决办法]