c语言中当
『壹』 c语言当中的 *和** 表示什么
*有两个操作数的话,一般是 代表算术运算乘法;只有一个操作数的话,一般是指针运算符,要求操作数是一个指针
**的话,操作数可以是二级指针,也就是指向指针的指针
『贰』 C语言中%怎么当字符输出
printf("%c", '\%');
printf("\%");
『叁』 C语言中%的作用
%有两种示意
1、%是求余符号 经常会用到判断一个数是不是能被另一专个整除
如:7%3=1(7除以属3 余下1,) 1%3=1(1除以3除不尽 余下1)
如判断一个m是奇数还是偶数 if(m%2==0) printf("偶数");
2、引导符,用于引导输入输出项表列的格式
例如:printf("%d%c%f",a,b,c);意思就是a以整型输出 b以字符型 输出 c以实型输出
『肆』 c语言中的“!”
c语言中的“!”是逻辑运算中的非运算。
“!”是C语言中的非运算符版,在变权量前面使用它,会构建非运算表达式,表达式的返回结果是个布尔值(也就是只有true或false)。对变量使用时,如果变量不是布尔数据类型,将会强制转化为布尔类型再使用,如整形变量123将被转化为true,整形变量0将被转化为false。
(4)c语言中当扩展阅读:
C语言所有运算符列表:
1、算术运算符
用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算,包括大于(>)、小于(<)、等于(==)、 大于等于(>=)。
、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算,包括与(&&)、或(||)、非(!)三种。
4、位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
『伍』 在C语言中<<是什么意思
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:
int i = 1;
i = i << 2; //把i里的值左移2位
也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)
需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:
int i = 0x40000000; //16进制的40000000,为2进制的01000000...0000
i = i << 1;
那么,i在左移1位之后就会变成0x80000000,也就是2进制的100000...0000,符号位被置1,其他位全是0,变成了int类型所能表示的最小值,32位的int这个值是-2147483648,溢出.如果再接着把i左移1位会出现什么情况呢?在C语言中采用了丢弃最高位的处理方法,丢弃了1之后,i的值变成了0.
左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:
int i = 1, j = 0x80000000; //设int为32位
i = i << 33; // 33 % 32 = 1 左移1位,i变成2
j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
在用gcc编译这段程序的时候编译器会给出一个warning,说左移位数>=类型长度.那么实际上i,j移动的就是1位,也就是33%32后的余数.在gcc下是这个规则,别的编译器是不是都一样现在还不清楚.
总之左移就是: 丢弃最高位,0补最低位
再说右移,明白了左移的道理,那么右移就比较好理解了.
右移的概念和左移相反,就是往右边挪动若干位,运算符是>>.
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:
int i = 0x80000000;
i = i >> 1; //i的值不会变成0x40000000,而会变成0xc0000000
就是说,符号位向右移动后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.
负数10100110 >>5(假设字长为8位),则得到的是 11111101
总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.
例:C语言中左移<<表示乘以2,右移>>表示除以2,这是由计算机工作原理导致的!但是要是7,二进制数为0111,右移一位得3.5,但是右移之后二进制数变成0011,是3。不一样啊,怎模解释呢??
答:移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。0111右移一位是把最后一位的1去掉,左边补个0,得0011,转换为十进制是3,这是正确的。并不等同于除以2 。
『陆』 c语言中!是什么意思
C语言的发展过程
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE
C
PROGRAMMING
LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C
语言标准,于一九八三年发表。通常称之为ANSI
C。
当代最优秀的程序设计语言
早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。
C语言的特点
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
C语言版本
目前最流行的C语言有以下几种:
·Microsoft
C
或称
MS
C
·Borland
Turbo
C
或称
Turbo
C
·AT&T
C
这些C语言版本不仅实现了ANSI
C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。
面向对象的程序设计语言
在C的基础上,一九八三年又由贝尔实验室的Bjarne
Strou-strup推出了C++。
C++进一步扩充和完善了C语言,成为一种面向
对象的程序设计语言。C++目前流行的最新版本是Borland
C++4.5,Symantec
C++6.1,和Microsoft
VisualC++
2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。
C和C++
但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
『柒』 ! 在c语言当中是什么意思
单独的!表示逻辑非运算,单目。 !a当a为真时,结果为假。否则结果为真。
与=连用,表示不等于运算,双目。
a!=b 当a与b值不相等时,结果为真。
『捌』 C语言当中的模运算
C语言怎中取模运算符是“%”,作用是求两个数相除的余数。
例如回,请看下面这段代答码:
x=15/7;
如果x是一个整数,x的值将为2。然而,如果用取模运算符代替除法运算符"/",得到的结果就不同了:
X=15%7;
这个表达式的结果为15除以7的余数,等于1,这就是说,15除以7得2余1。
取模运算符通常用来判断一个数是否被另一个数整除。例如,如果要打印字母表中序号为3的倍数的字母,可以使用下面这段代码:
int x;
for(x=1; x<=26; x++)
if((x%3)==0)
printf("%c"; x+64);
上例将输出字符串"cfilorux",即字母表中序号为3的倍数的所有字母。
『玖』 C语言中i++;当循环
#include<stdio.h>
intmain()
{
inti=2;
intj=0;
while(i<=100)
{
if(i%3==0)
{
printf("%4d",i);
j++;//这里为什么用j++是为了统计输出了几个数,每输出一个数,j就+1
}
if(j%11==0)//当计数到输出了11个数时,就换行
{
printf(" ");
}
i++;//这里为什么要有一个i++;不是循环结束,而是换下一个i,继续循环
}
printf(" ");//这里这个换行是输出结束后换一行(非常有可能未满11个)
return0;
}