请教两个问题(有深度)?

wbcuc 2011-02-18 11:35:56
There’s a variable VAR, how to judge if it is signed or unsigned?

这个问题太抽象,请问如何回答?

Implement the following stack operations with linked list.
• bool push(int aValue); //push parameter to stack
• int pop(); //pop from stack
• int popall(int aValue); //find and pop all elements in stack that equals to
parameter, and return the amount of popped elements.
• int count(); //return the amount of elements in stack
• void empty(); //empty the stack

上面这个问题不知所云,也不知道怎么回答?
...全文
370 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
bing_bing 2011-02-18
  • 打赏
  • 举报
回复
1.计算机基础
2.数据结构基础
wbcuc 2011-02-18
  • 打赏
  • 举报
回复
能不能用中文解释下,E文真是个问题啊。。。

[Quote=引用 7 楼 qq120848369 的回复:]
List:first in first out
Support:push_back,pop_front

Stack:first in last out
Support:push_back,pop_back

Stack's push_back is just the list's push_back.
Stack's pop_front is to pop_front all el……
[/Quote]
wbcuc 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pengzhixi 的回复:]
1.判断一个变量是有符号数还是无符号数
2.实现一个链表list
[/Quote]

第2个题是用链表实现指定的堆栈操作吧
wbcuc 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qq120848369 的回复:]
VAR=0; Var-=1;if(var>0) then unsigned else signed
[/Quote]

VAR怎么强制初始化为0了,不太明白
leoLQ9239339 2011-02-18
  • 打赏
  • 举报
回复
有符号和无符号在内存里面储存是没有区别的,具体是看你取出来用的时候怎么去,例如有一个数字,二进制是1000 0001,你当成signed取就是 -126,如果你当成unsigned去取就是129.但是实际在内存中的话是无法判断他是有符号还是无符号的,他都是1000 0001
qq120848369 2011-02-18
  • 打赏
  • 举报
回复
List:first in first out Support:push_back,pop_front Stack:first in last out Support:push_back,pop_back Stack's push_back is just the list's push_back. Stack's pop_front is to pop_front all elements from list ,push_backing them into a new list at the same time, so you can get the last element which is the same as the top of stack.
qq120848369 2011-02-18
  • 打赏
  • 举报
回复
VAR=0; Var-=1;if(var>0) then unsigned else signed
pengzhixi 2011-02-18
  • 打赏
  • 举报
回复
1.判断一个变量是有符号数还是无符号数
2.实现一个链表list
fengzhw 2011-02-18
  • 打赏
  • 举报
回复
面试题?还是考试题?

学过中文的数据结构的话,第二个不应该是问题。

第一个,属于通常不太注意的一个细节,好像是流传很久的微软一个面试题
昵称很不好取 2011-02-18
  • 打赏
  • 举报
回复
判断符号位啊
int i;
取符号位(i&0x80000000)看是0还是1
「已注销」 2011-02-18
  • 打赏
  • 举报
回复
无符号数和有符号数相减结果为无符号数
有点笨 2011-02-18
  • 打赏
  • 举报
回复

楼主,不知道是不是你的英语不太好啊。这样的问题真的不算有深度哎
we_sky2008 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 havesnag 的回复:]
C/C++ code
if (((VAR | 0x01) << (sizeof(VAR) * 8 - 1)) > 0)
{
cout << "unsigned" << endl;
}
else
{
cout << "signed" << endl;
}
[/Quote]
分别试试下面几个,看结果正确吗:
unsigned char VAR = 0;
signed char VAR = 0;
unsigned short VAR = 0;
signed short VAR = 0;
华时纳 2011-02-18
  • 打赏
  • 举报
回复
if (((VAR | 0x01) << (sizeof(VAR) * 8 - 1)) > 0)
{
cout << "unsigned" << endl;
}
else
{
cout << "signed" << endl;
}
qq120848369 2011-02-18
  • 打赏
  • 举报
回复
懂了,原来都会提升,学习了
qq120848369 2011-02-18
  • 打赏
  • 举报
回复
Sky给的是函数,这时候只能用模板防止类型提升了
qq120848369 2011-02-18
  • 打赏
  • 举报
回复
都别想了,我都给了通用性答案了。虽然有无符号,0-1的二进制都是一堆1,但是从二进制到十进制的转化编译器会根据变量类型作不同的处理,无符号打印一个很大的正数,有符号发现符号位为1,所以取反+1打印-1。 所以根据正负就知道了。有人用位运算修改符号位,没有通用性,利用减法具有通用性。
无论什么样的整形都通用。
we_sky2008 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 we_sky2008 的回复:]
首先,你要确定要判断变量的类型,这样就要求适用于多个类型
所以C中只好用宏定义,但是由于整值提升,char, unsigned char, short, unsigned shor, 在用宏判定时会失效,这在《C专家编程》中作为硅谷面试题目提到过
而在C++中可以通过函数模板来处理
[/Quote]
《C专家编程》 page 280
we_sky2008 2011-02-18
  • 打赏
  • 举报
回复
首先,你要确定要判断变量的类型,这样就要求适用于多个类型
所以C中只好用宏定义,但是由于整值提升,char, unsigned char, short, unsigned shor, 在用宏判定时会失效,这在《C专家编程》中作为硅谷面试题目提到过
而在C++中可以通过函数模板来处理
weerweer 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 leolq9239339 的回复:]

有符号和无符号在内存里面储存是没有区别的,具体是看你取出来用的时候怎么去,例如有一个数字,二进制是1000 0001,你当成signed取就是 -126,如果你当成unsigned去取就是129.但是实际在内存中的话是无法判断他是有符号还是无符号的,他都是1000 0001
[/Quote]

是-127
加载更多回复(7)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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