小弟要去面试 有些问题搞不懂 请大哥大姐指导一下小弟

acefan2008 2009-05-16 02:39:39
(一) 求#define fun(a,b) a+b
问 30/fun(5,6)*fun(8,9)运算结果
34

(二)写出4种BOOL值
char* p1="abcd";
char p2[]="abcd";
const char *p3="abcd";
char* const p4="abcd";
p1==p2 1
p1==p3 0 (?)
p1==p4 1 (?)
p2==p3 0 (?)
p3==p4 1 (?)

...全文
171 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
adrian_bleu 2009-05-18
  • 打赏
  • 举报
回复
第一个,30/fun(5,6)*fun(8,9)=30/5+6*8+9=63.主要是#define fun(a,b) a+b 和#define fun(a,b) (a+b )不一样
jinlking 2009-05-18
  • 打赏
  • 举报
回复
宏定义不涉及到具体运算,只要把对应的东西替代进去
MSWinCE 2009-05-18
  • 打赏
  • 举报
回复
我感觉楼主的基础不太好,这以后会影响你的工作的。
AlexChan1981 2009-05-18
  • 打赏
  • 举报
回复
该把大学的书再拿来看看,基础很重要
renjiao17 2009-05-18
  • 打赏
  • 举报
回复
把式子列一下数带进去,然后按照运算符的优先级来计算就可以
ffeige1984 2009-05-17
  • 打赏
  • 举报
回复
自己动手是最好的
91program 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acefan2008 的回复:]
第二题,小弟真的看不太明白,能再详细点吗,谢谢
[/Quote]

这种问题,LZ最好自己去调试一下,看看内存情况就清楚了。

数组大小定义为4,赋值为4个字符,这种情况下4个字符后是什么不确定!如果正好是NULL,则与指针是相同的,但是这种情况太少。
acefan2008 2009-05-16
  • 打赏
  • 举报
回复
第二题,小弟真的看不太明白,能再详细点吗,谢谢
91program 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acefan2008 的回复:]
请问二楼的这位大哥,我要是不写代码怎么才能知道是63呢?还有第二题,能告诉我原因吗?因为这些都是笔试的题目
没电脑好用的
[/Quote]

第二道题,不是已经在4楼给出答案了吗!LZ看不懂!!!
91program 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acefan2008 的回复:]
请问二楼的这位大哥,我要是不写代码怎么才能知道是63呢?还有第二题,能告诉我原因吗?因为这些都是笔试的题目
没电脑好用的
[/Quote]

很简单,将define定义的代入计算式得:30 / 5 + 6 * 8 + 9,这样LZ会算了吧!

不会还不会吧,先乘除、后加减。
acefan2008 2009-05-16
  • 打赏
  • 举报
回复
请问二楼的这位大哥,我要是不写代码怎么才能知道是63呢?还有第二题,能告诉我原因吗?因为这些都是笔试的题目
没电脑好用的
91program 2009-05-16
  • 打赏
  • 举报
回复
其实第二道题,是数据与指针的区别
定义数组,不会自动增加结尾符:NULL 的,而指针则会增加一个NULL。
91program 2009-05-16
  • 打赏
  • 举报
回复
int _tmain(int argc, _TCHAR* argv[])
{
char* p1="abcd";
char p2[]="abcd";
const char *p3="abcd";
char* const p4="abcd";

if(p1==p2)
{
printf("==1\r\n");
}
if(p1==p3)
{
printf("==2\r\n");
}
if(p1==p4)
{
printf("==3\r\n");
}
if(p2==p3)
{
printf("==4\r\n");
}
if(p3==p4)
{
printf("==5\r\n");
}


return 0;
}

结果:
==2
==3
==5
91program 2009-05-16
  • 打赏
  • 举报
回复
int _tmain(int argc, _TCHAR* argv[])
{
int iRet = 30/fun(5,6)*fun(8,9);
printf("==%d",iRet);
return 0;
}
结果:==63
91program 2009-05-16
  • 打赏
  • 举报
回复
有发帖的时间,自己写段代码就知道结果了

1,076

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧