社区
C语言
帖子详情
一个c赋值语句,看看值为多少?
qsyang
2003-09-03 05:22:06
ulong a=10;
*((ulong *) a)-- = 0;
请问a值为多少啊? 关键是为什么????
...全文
138
27
打赏
收藏
一个c赋值语句,看看值为多少?
ulong a=10; *((ulong *) a)-- = 0; 请问a值为多少啊? 关键是为什么????
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
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.函数调用
语句
函数调用
语句
由函数名,...
python中
赋值
语句
_用python进行
赋值
语句
原标题:用python进行
赋值
语句
赋值
语句
包含三部分:左值、
赋值
运算符和右值。
赋值
语句
剖析。这条
语句
让var指向value。左值必须是变量,而右值可以是变量、值或结果为值的任何表达式
赋值
语句
有两个用途:定义新的变量;让已定义的变量指向特定值。例如第一条
赋值
语句
(x = 4)完成了两项职责,是一条初始化
语句
。它让Python创建新变量x,并将值5赋给它。然后,在可以使用整数的任何地方,都可使用变量...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章