c语言问题:%=,+=,-=,*=,/=,<<,>>,if(!a)都代表什么?怎么用?

作者&投稿:喻知 (若有异议请与网页底部的电邮联系)
C语言题目:int a=1;if(!a)和if(a)是什么意思?~

在C语言中, 只有0为假, 非0都为真
if(条件表达式) 条件为真是执行语句if的语句
int a=1;// 给定a为1, 即非零
if(!a)// a非零为真, 真的非(!)即为假, 这一句判断后将不执行if后的相应语句
if(a) // a非零, 条件为真,执行相应语句

if(a%2)是对A%2的结果进行判断,如果是非零,则判断为真,否则为假;if(a%2==0)是判断a%2是否为零,是则为真,否则为假。
那么如果,a为偶数,那么if(a%2)判断的结果是假,而if(a%2==0)判断的结果是真

呵呵,你是新手吧。你是一个自学者,一直在探索C语言,这次把很多疑问提了出来,是这样吧?让我来回答你的疑问
%=,+=,-=,*=,/=是复合赋值运算符,用法:a%=b就是a=a%b,a+=b就是a=a+b,
a-=b就是a=a-b,a/=b就是a=a/b。这个规律你也发现了吧,就是a+=b当成a+b后,放到a里面。
类似的,a*=b就是a=a*b。

<<和>>都是 位运算符 ,如果有一个数a=255,要把它转换成 二进制形式 即11111110,<<是位左移运算符,如果a<<1则11111110往左移一位,1多出来了1个,丢掉,即11111100,再转换成十进制数,即253。,>>是位右移运算符,如果a>>1则11111110往左移一位,0多出来了1个,丢掉,左边补上0,即0111111,再转换成十进制数,即127。
用法:a(是一个数字)<<(或>>)b(移动的位数)。

if是判断语句,如果( )中的表达式的值非0,则执行下面{ }的语句。
!是”非“的意思,跟在它后面的东西和她(即!)的值必定是1或0。
如(!1)=0,(!1000)=0,(!非0值)=0,(!0)=1。
if(!a)时,如果a=0,则执行{ }中的语句。
举个例子:
int a=0
if(!a)
{
printf("a=0");
}
此时输出a=0.
但如果a不等于0,则不执行"printf("a=0");"

很高兴为你回答问题。

a =b相当于a=a b,其它的类似,<<是移位(二进制),a<<b相当于a乘以2的b次方,>>是除。if(!a)就是if(a==0)


c语言问题,关于%* d的问题?!
c语言中%*d表示忽略第一个整数,而%*d中的*,是一个标志符号,用来表示跳过它相应的数据,表示输出的数据区和它对应的数据表示输出的空格个数,从而使下一个输入的内容复制给紧接着的变量。c语言格式介绍:%d是输出整型数据,%和格式字符组合在一起的作用是将输出的数据转换为指定的格式输出。%d是带...

C语言的问题,这道题怎么做?
解析如下:include <stdio.h>int main(){ \/* int k=12; for(;k>8;k--); if(k%2==0)printf("%d",k); return 0; *\/ \/\/解析如下: int k=12;\/\/初始k=12 for(;k>8;k--)\/\/初始k>8,条件成立,开始循环,执行循环内语句 ;\/\/循环内为空语句,...

二级c语言小问题
你好!!!关于A项 :要是前面的定义是这样的:int a=1;那么a=a+7;完全是正确的,但是要是定义的是;const int a=1;那么就是错误的了,原因很简单既然a声明的时候是常变量,那么它的值就不应该改变。所以a=a+7;是错误的。关于B项,同上。C项;关于求余运算符的操作数都必须是整型,12.3...

c语言的一些问题,在线等
答:1.C语言中,函数返回类型在定义中可以省略,此时函数返回类型隐含是:int 型 。2.C源程序文件的后缀名默认为 :.c 。3.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b\/b的值是:6.000000 4.程序段float x=165.323;printf(“x=%-10.2f”,x);执行时输出的结果为...

c语言的一些问题
1.%f中的f是单精度,其精确到小数后6位。 这个不仅在这里会是6位,你随便定义个f的类型,输出f的类型,一样精确到小数点后6位,所以这是最原始的输出(相比较你后面的输出)2.%8f 中的8是从右边数占8个字的宽度。我们知道f输出的值是123.456001。可以输出123.456001的宽度是10(包括小数点在...

c语言小问题
别主要步骤了,一个递归就解决问题了,不过对数据范围限制的比较死了就,并且不能算负数,进制也限制到最大36,再大英语字母也表示不了了。另外如果想换算更大范围的数的话,要用到高精度除法了就(实际还是高精度减法)。参考吧~~#include<stdio.h>#include<string.h>void printNum(long num){ if(0<=num&&num<...

C语言运算符优先级问题: k*=n%10,为什么不可以译为“k=k*n%10",而是...
这个是程序的运算级别的问题,就像小学的四则运算那样,当加减乘除集合在一起的时候,我们都是括号里面的,然后在按照先乘除后加减的问题来操作的,而计算机语言也是一样的,他是有所谓的运算规则的,下面是我在网上找到一份比较详细的运算规则,你看看吧:1级优先级 左结合 () 圆括号 [] 下标运算符...

请教几个有关C语言的问题: 1、为什么‘cd’不能做为C语言合法常量?而0.1...
(1) 用单引号括起的是字符常量,'cd' 含2个字符,也不是转义字符,所以不是合法常量。0.1e+6 是合法的 E 格式 浮点数。(2)char a='aa'; 用单引号括起的是字符常量,'aa' 含2个字符,也不是转义字符,所以不是合法常量。'n' 是合法字符常量, '\\x2d' 是合法字符常量, 单引号里...

两个关于C语言的问题
第一题:应该这样看 if(a>c) b=a;a=c;c=b;如果你明白可追问 第二题:首先,在 switch(x) {} 中,case 0与case 1之间没有break;所以执行完case 0后面的内容后还会执行case 1后面的内容,这就是为什么会输出 #,因为执行了default : printf ("#");其次,* 这个是得不到的,除...

c语言输出问题,37题,求大神详细解答一下*的作用,以及最后输出结果是怎么...
注:使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左 5 对于*的作用,因为在“”因此*没有具体的作用,因为不属于格式控制字符串,(1)当*两个变量之间是乘的意思,比如 a = 3;b = 4; a*b (2)在类型的后面是 ...

相山区13286415253: C语言中一条很简单的问题int a = 3 执行 a += a- = a * a a的值等于多少 具体讲下怎样执行的-
蓍飘复方:[答案] 好 int a = 3 a += a -= a * a 从后往前执行 知道吧! a -= a * a 就是 a=a-a*a a=3-3*3=3-9=-6 a+=a 就是 a=a+a a=-6+-6=-12 欢迎采纳! 来个截图 !

相山区13286415253: 关于C 语言中运算问题 a=12 a+=a - =a*=a 怎么计算的 -
蓍飘复方:[答案] 很简单,赋值是从右往左操作,所以你可以把这个语句分解开:int a=12; a*=a; a-=a;//注意到这里a=a-a=0! a+=a;一目了然了吧! 所以最后a=0;

相山区13286415253: 定义一个求阶乘的函数,然后计算1! - 2!+3! - 4!+5! - 6!+7! - 8!+9!.C语言问题 -
蓍飘复方: int fact(int n) {int m = 1;while(n>0){m*=n;n--;}return m; } int main() {int i, sum=0;for(i=1;i<=9;i++){if(i%2)sum+=fact(i);elsesum-=fact(i);}printf("1!容-2!+3!-4!+5!-6!+7!-8!+9!=%d\n", sum); }

相山区13286415253: C语言中 - >是什么意思啊? -
蓍飘复方: “->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据. 换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”. 问题中的p=p->next ,...

相山区13286415253: C语言的问题,为什么 下列程序的输出结果是( B ). inti=010,j=10; printf("%d,%d\n",i++,j--); -
蓍飘复方:[选项] A. 11,10 B. 9,10 C. 10,9 D. 10,8

相山区13286415253: 输入一个小于等于30个的数串存放在a[31]的数组里,以 - 1作为结束并将其打印出来,用C语言 -
蓍飘复方: #include int main(){ int a[31]; int l, i; for(l = 0; l < 31; l ++) { scanf("...

相山区13286415253: C语言问题 -
蓍飘复方: (1)2.5 解:a%3=7%3(7对3取余)=1;a%3*(int)(x+y)%2/4=1*(int)(2.5+4.7)%2/4=1*7%2/4=1*1/4=0;所以,x+a%3*(int)(x+y)%2/4 =2.5 (2)3.500000 解:float表示浮点型,即应保留六位小数.(float)(a+b)=(float)(2+3)/2=5.000000/2=2.500000;(int)x%(...

相山区13286415253: C语言问题 求解答 急速!a=10a+=a - =a*a等于多少?写过程 -
蓍飘复方:[答案] a*a 是 100,此时a 的值还是 10, a -= 100,a 得到 10 - 100 ,为 -90 a += -90, a 的值为 -90 + (-90) ,结果是 -180, -180,这就是整个表达式的最终值.

相山区13286415253: C语言的一个基础问题:printf("%c,'\41'); 为什么输出的是 "!" ,感叹号?我看到8进制,41代表感叹号 -
蓍飘复方: '\'是转义字符,41是ASCII编码号.所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了.

相山区13286415253: 【C语言问题】<一个三位数,它的各个数字位的立方和等于它本身!比如:153=1*1*1+5*5*5+3*3*3>对一个三位数,它的各个数字位的立方和等于它本身!... -
蓍飘复方:[答案] 水仙花是吧? #include int leaf(int n) { \x05int a,b,c; \x05a = n / 100; \x05b = (n % 100) / 10; \x05c = n % 10; \x05if(a * a * a + b * b * b + c * c * c == n) \x05\x05return 1; \x05else \x05\x05return 0; } int main() { \x05int n; \x05scanf("%d",&n); \x05if(leaf(n)) ...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网