C语言一个符号问题!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言一个符号问题!!相关的知识,希望对你有一定的参考价值。

我想问下&符号什么意思
注意:不是两个&(&&),而是一个&(&);

可以是单目预算中的取地址运算符,如scanf("%d",&a);
也可以是位与运算符,如:
A与B都是二进制数
A= 10110011
B= 10101001
A&B=10100001
将A,B对应为比较,两者为1,A&B对应位上为1,否则为0
参考技术A 1.按位与 运算符,二进制位运算符
1&1==1
1&0==0
0&0==0

2.取地址运算符,取变量地址。
参考技术B &有三种用法:
1、是逻辑位运算符;
2、是非短路“与”逻辑运算符;而&&是短路“与”逻辑运算符
3、输入时的需要获取的逻辑地址
参考技术C 1 取地址符号,比如要得到变量a的地址,而且赋给指针p,写成p=&a;
2 按位与运算,通常用来对某些位清0或保留某些位.如c=a&b;
参考技术D 在输入操作中,他是取地址符,楼上的有说
在位运算中,他是 “按位与” 的 位运算符
第5个回答  2012-07-15 其实&这个符号是一个取地址的符号,是指向那个变量的一个地址,而&&是一个逻辑运算符

C语言++符号的问题!vc++6.0和Dev-C++运行结果不一致!

#include<stdio.h>
int main(void)

int num=1;
while(num++<=2)
printf("%d",num);
getchar();
return 0;

VC里边是34,Dev-C里边是23。
我主要想知道那个++,出循环之后还加不加1了?++是判断条件,那它到底是不是属于循环的呢?!!!
to arongustc:
不好意思说错了,C primer plus里面关于后缀++的解释得到的也应该是3

原文: while(shoes++<18.5)这个表达式将达到19,因为shoe将在比较之后而不是之前增加
只到19。。。

自增符 i++
你的程序里,while里面的表达式可以用括号写出来,更明确一点。
while((num++)<=2)
注意:这里的num是变量。当num自增之后,值会发生变化。也就是说num++的值会发生变化。
标准C里面的这样的。
int num=1;
num++;//相当于num=num+1;
也就是说,运算之前的值num是1.运算之后的num值是2.
所以num++也是一个变量,所以你的问题也很明确了。一个变量的值和2做比较。显然是一个判断表达式。
至于不同编译器中为什么结果不同,具体情况是这样的,由于自增符在不同的编译器中是不同的表现方式。但是通用的编译器,还是按照++符号和变量的位置来判断的。(需要在熟悉编译器的情况下或者在汇编中查看代码。使用debug模式。)
下面说通常情况
例如
int i=0;时
++i和i++。的情况分别是:
++i 这时候,++在i的左边,就先自增,在赋值。也就是说。运算之前i的值是1,赋值之后的值是1.
i++ 则不同,++在i的右边,则先赋值,再自增。也就是说。运算之前i的值是0,赋值之后的值是1.
参考技术A 后缀++,也就是postfix ++,表达式的值就是num的值,但是num会++。
++当然属于循环,因为是出现while的条件表达式中,而条件表达式会在每次循环时求值,直到false为止。这里很显然,Dev-C++的输出是正确的。

VC6相对来说比较老,对标准的支持不是很好,建议使用vc2003以上的版本。

在vc2010中,得出与Dev-C中相同的结果。

楼主可以参考c++标准的文档中的6.5和6.4。追问

嗯,C primer plus里面关于后缀++的解释得到的也应该是3

原文: while(shoes++<18.5)这个表达式将达到19,因为shoe将在比较之后而不是之前增加
只到19。。。

那C等级考试用的什么标准?笔试也是和VC++6.0标准一样吗?那岂不是答案有歧义?

追答

等级考试的我就不清楚了,如果考试用vc6来验证结果,那我只能说遗憾。不用太在意这种考试的结果,因为没多大意义,只要自己心里明白就行。

参考技术B 找到这个问题的答案,还不如不写这种带歧异的表达式,估计这个根本在标准里没有定义追问

这是我们老师上课举例的一个问题,他给的答案是num最后是4,C primer plus里面关于后缀++的解释得到的也应该是4,而且里面并没有说这是不明确的定义,只有一个表达式里面有两个++才可能导致不同环境或编译器的差别把,比如y=n++ + n++;

现在我的问题就是到底怎么解释这个差异?两个编译器运行结果不一样?虽然我觉得前者应该是对的

追答

问题是它不一定解释得清楚,如果标准没有规定,它得值完全依赖编译器,根本没有道理可讲

参考技术C 百度一下 傻蛋

以上是关于C语言一个符号问题!!的主要内容,如果未能解决你的问题,请参考以下文章

c语言的运算符号数组替代

C语言符号常量定义

C语言编译出现了 多重定义的符号 的报错

求大神整理c语言指令符号及用法大全。

关于C语言中unsigned变量的问题?

C语言++符号的问题!vc++6.0和Dev-C++运行结果不一致!