社区
C语言
帖子详情
一个c赋值语句,看看值为多少?
qsyang
2003-09-03 05:22:06
ulong a=10;
*((ulong *) a)-- = 0;
请问a值为多少啊? 关键是为什么????
...全文
109
27
打赏
收藏
一个c赋值语句,看看值为多少?
ulong a=10; *((ulong *) a)-- = 0; 请问a值为多少啊? 关键是为什么????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qsyang
2003-09-29
打赏
举报
回复
Meyer 和 babiq 说的很有道理,非常感谢,佩服!
结贴了!
jys0793
2003-09-28
打赏
举报
回复
谁写程序时,写出这种语句,佩服
babiq
2003-09-28
打赏
举报
回复
给大家解释解释吧;
首先这个问题绝对不是竞赛问题,在协议开发中常常用到这样的赋值。
这是一种非常常用赋值方法,如果一个c程序员连这种句子都写不出的话,他肯定会被辞退。
举个例子:
int a[10];
void operate()
{
int* ptr;
ptr = a;
for(int i = 0; i < 10; i++)
{
*ptr++ = i; //pt就等同于楼主提到的*((ulong *) a)-- = 0;中的 (uLong*)a
}
}
此操作包含的意思是先赋值在自加;因此楼主提到的a值是6;
作者这样写程序不过是简化了一下而已。
jock_521
2003-09-28
打赏
举报
回复
哈哈!这样的问题只能在竞赛中出现啊!
Bandry
2003-09-28
打赏
举报
回复
这样程序不会死吗?
Meyer
2003-09-28
打赏
举报
回复
结果为6是很好理解的
*((ulong *) a)-- = 0;
那个= 是给 *a 即 地址为10的内存赋值 0
然后执行 -- 操作 对 a中的数值-1,
因为(ulong *)a 的原因 a是作为 ulong* 的指针
他的机器 ulong 为4字节,所以这个 ((ulong*)a)--
减的是4 所以a=10-4=6
这个应该是c代码,iso C++中是拒绝这种操作的。
Meyer
2003-09-27
打赏
举报
回复
*((ulong *) a)-- = 0;
既然是驱动,
很有可能他是确知 地址 10 部分的数据是他要修改的
Wolf0403
2003-09-27
打赏
举报
回复
ulong* tmp = (ulong*) a;
*tmp = 0;
tmp--;
TianGuangZao
2003-09-27
打赏
举报
回复
同意 Meyer()
需要结合上下文来理解才能判断作者是否在瞎炫耀技术。
代码并不复杂,也很容易理解,不要动不动就贬低人家。
qsyang
2003-09-26
打赏
举报
回复
qhgary(Shining) :
"没有人会写这样的代码"
这就是我们和会写这样代码的差距!!!!!
“如果你写了就准备被炒吧”
这样老板的公司早晚要倒闭!!!!
"因为没有人看得懂"
这倒是事实,不过更明白些应该是“因为这里没有人看的懂”!!!!
qhgary
2003-09-08
打赏
举报
回复
*门根本不会来回答这样的问题,因为上面已经说得很清楚了,没有人会写这样的代码,如果你写了就准备被炒吧,也没有人会去看,因为没有人看得懂
qsyang
2003-09-08
打赏
举报
回复
专家都哪里去了?哪些*们呢?
atlcat
2003-09-04
打赏
举报
回复
无法运行,楼主的程序不对
不过从字面上理解应该是这样的:
*((ulong *) a)-- = 0;
a的地址--=0
而a应该还是10,没变
binjuny
2003-09-04
打赏
举报
回复
又长又臭
whyuuk
2003-09-04
打赏
举报
回复
a 值应该不变!
但是这个语句执行起来是要出错的!
qsyang
2003-09-04
打赏
举报
回复
各位老大,它的输出值是6 !
这不是什么考试题,而是外国人写的某个driver中的一段程序。我也移植比较困惑这样的用法!
robertnet
2003-09-04
打赏
举报
回复
非法地址访问,若真要问a是多少那就当它是10好了。
likangnian0128
2003-09-04
打赏
举报
回复
*((ulong *) a)-- = 0;
??
(ulong *)a 将ulong的a cast成一个ulong的指针,这恐怕是会内存访问出错吧?
然后,假设地址为000000000A的内存可以访问
那么*((ulong *)a)-- 是将地址000000000A的ulong类型的数自减1,结果是一个右值,不能出现在赋值符号左侧,又是一个错误。
liao2001
2003-09-04
打赏
举报
回复
非法地址访问
hillyee
2003-09-04
打赏
举报
回复
haha you are right!
加载更多回复(7)
笔记式Python视频精讲【基础篇】--
语句
函数篇
1. 帮助学员快速了解Python
语句
和...以笔记为导向作为讲解内容是本人一贯的授课亮点,一条笔记至少包含
一个
知识点,200多条笔记帮助学员快速掌握Python200多个知识点 3.提供授课内容笔记作为课后复习以及工作备查工具
c语言
赋值
语句
的作用,详解C语言
语句
空
语句
空
语句
本身并不执行任何任务,但有时还是有用的。它所适用的场合就是语法要求出现一条完整的
语句
,但并不要求它执行任何任务。表达式
语句
C语言并不存在专门的
赋值
语句
,那它是如何进行
赋值
的?答案是
赋值
就是一种操作,就像加减法一样,所以
赋值
就在表达式内进行。你只要在表达式后面加上
一个
分好,就可以把表达式转化为
语句
,所以下面两个
语句
是表达式
语句
而不是
赋值
语句
。x = y + 3;ch = getchar(...
「C语言」C语言中
赋值
语句
用于判断条件
C语言中
赋值
语句
用于判断条件
python中正确的
赋值
语句
_python自增自减?
赋值
语句
返回值?逗号表达式?
咳咳,直接进入正题吧。自增自减(++/--),以及
赋值
语句
,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的
语句
会使最终 x 的
值为
1
赋值
语句
将所赋的值作为该
语句
的返回值(值传递); 类似 (x = func()) > 0; 的
语句
会将函数 func(...
c
语句
及
赋值
语句
C语言及
赋值
语句
与其他高级语言一样,C语言的
语句
也是用来向计算机系统发出操作命令,c程序的执行部分是由
语句
组成的,所以
一个
程序应当包含若干
语句
,程序的功能也是由执行
语句
实现的。 表达式
语句
表达式
语句
由表达式加上分号;组成,一般形式如下 表达式; 例如; X=x+1 是
一个
表达式,而不是
语句
X+x+1; 则是
一个
语句
。比较表达式来看,
语句
多了
一个
分号。 2.函数调用
语句
函数调用
语句
由函数名,...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章