请教一下前辈们这里类型转换的问题

1030486762567 2020-12-20 11:24:11
前言:
void* LinkStack_Top(LinkStack* stack); //这个函数是 读 栈顶元素
int LinkStack_Push(LinkStack* stack, void* item);//这个函数是 将元素存储 进栈
transform("9+(3-1)*5+8/2"); // tranform();函数参数 是 字符串"9+(3-1)*5+8/2"
transform是一个利用栈处理字符的函数。
问题:
大哥们,这个exp[i] 是char类型,为什么入栈时 需要转成 int型,出栈时也要转成int型这样做的目的 是什么 ?我知道char 是1个字节,int是4个字节,为什么需要这样做呢?似乎不这么做好像也可以,感觉我有点钻牛角尖,但是不弄明白心里又不舒服

...全文
500 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
1030486762567 2020-12-21
  • 打赏
  • 举报
回复
感谢各位老师,冬至快乐
forever74 2020-12-21
  • 打赏
  • 举报
回复
为了不引起对齐错误也就是总线错误,要么费心计算需要多少填充字节,要么像这样粗鲁地转换成32位或64位(依系统而定)。
forever74 2020-12-21
  • 打赏
  • 举报
回复
栈这种东西我们喜欢比喻为子弹夹。 照你的想法,弹夹里面可以7.62mm和5mm还有12mm的混合还不出啥问题? 尽管指针尤其是void指针可以以字节为单位移动,但是混压不同尺寸的数据很容易引起总线错误啊。
赵4老师 2020-12-21
  • 打赏
  • 举报
回复
去掉你认为多余的转换,看编译是否报错,编译如果不报错的话,用-2147483648,2147483647,0,-1,1作为数据,运行测试一下看结果是否如你所愿。

69,364

社区成员

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

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