社区
C语言
帖子详情
一个c赋值语句,看看值为多少?
qsyang
2003-09-03 05:22:06
ulong a=10;
*((ulong *) a)-- = 0;
请问a值为多少啊? 关键是为什么????
...全文
245
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)
C语言
赋值
语句
C语言
赋值
语句
赋值
语句
赋值
语句
赋值
语句
是由
赋值
表达式再加上分号构成的表达式
语句
。 其一般形式为: 变量=表达式;
赋值
语句
的功能和特点都与
赋值
表达式相同。 它是程序中使用最多的
语句
之一。 在
赋值
语句
的使用中需要注意以下几点: 由于在
赋值
符“=”右边的表达式也可以又是
一个
赋值
表达式, 因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。 其展开之后的一般形式为: 变量=变量=…=表达式; 例如: a=b=c=d=e=5; 按照
赋值
运算符的右接合性,因此实际上等效于:
C
语句
————
赋值
语句
赋值
符号“=”即为
赋值
运算符,它的作用是将
一个
数据赋给
一个
变量。如a=3的作用是执行一次
赋值
操作,把常量3赋给变量a。也可以将
一个
表达式的值赋给
一个
变量。
c语言
赋值
语句
(11)下列
语句
中符合 C 语言语法的
赋值
语句
是______。 A)a=7+b+c=a+7B)a=a+7 C)a=7+b,b++,a+7; D)a=7+b,c=a+7; 知识点:C 表达式类型 评析:本题的考查点是
赋值
语句
。 C 语言中,
赋值
语句
具有其他高级语言的
赋值
语句
的一切特点和功能。但也有不同: ① C 语...
「C语言」C语言中
赋值
语句
用于判断条件
C语言中
赋值
语句
用于判断条件
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章