黑马程序员——c语言的进制表达方式,位运算,数组,字符串数组

来源:互联网 发布:mac 文件夹半透明 编辑:程序博客网 时间:2024/05/19 09:04

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流——-

一、进制的表达方式

int number = 12;      默认10进制int num2 = 0b1100;    二进制(0b或0B开头)int num3 = 014;       八进制(0开头)int num4 = 0xc;       十六进制(0x开头或0X开头)

%d\%i: 十进制输出整数 %c: 输出字符 %p: 输出地址
%f: 输出小数 %o: 八进制输出整数 %x: 十六进制

运算规则

例如:
1>. 0b1100 = 0 * 2的0次方 + 0 * 2的1次方 + 1 * 2的2次方 + 1 * 2的3次方 = 12 (二进制转10进制)

2>. 67 = 64 + 2 + 1 = 2的6次方 + 2的1次方 + 2的0次方 = 0b100000 + 0b10 + 0b1 = 0b1000011 (十进制转二进制)

n位二进制的取值范围:2的n次方 - 1

二、类型说明符

int 4字节 %d
short 2字节 %d
long 8字节 %ld (如果数字过大,占用内存表达不足时,可以改 int -> int long = long )
signed int == signed (有符号:正数、0、负数) ->取值范围为:2的31次方 - 1
unsigned int == unsigned (无符号:0、负数、最高为不要当做符号位、输出用%u) ->取值范围为:2的32次方 - 1

三、位运算

1.& 按位与

功能:只有对应的两个二进制均为1时,结果为1   举例: 9 & 5 -> 1001 & 101 = 0b0001 = 1

2.| 按位或

功能:只要对应的二进制有一个为1时,就为1,否则为0举例: 9 | 5 -> 1001 | 101 = 0b1101 = 13

3.^ 按位异或

功能:当对应的二进制相异时,结果为1,否则为0 举例: 9 ^ 5 -> 1001 ^ 101 = ob1100 = 12

总结:

1>.自己异或自己则为0  如 9 ^ 9 = 02>.交换 9 ^ 5 ^ 6 == 9 ^ 6 ^53>.任何数值跟0异或,结果还是原来的数值 4>.a ^ b ^ a == a ^ a ^ b == 0 ^ b == b       

4.~ 按位取反

5.<< 左移

举例:
9 << 1 -> 9 * 2的1次方 == 18 (相当于把32位的9这个数字向左移1位,最高位移1位,低位补0)
9 << n -> 9 * 2的n次方 == 9 * 2的n次方

6.>> 右移

举例:
8 >> 1 -> 8 / 2的1次方 == 4 (注意:移位时第一位的符号位不变)
8 >> n -> 8 / 2的n次方

四、数组与函数

1.数组
定义:用来存储一组数据的,且只能存放一种类型的数据,比如,int类型,float类型,里面存放的数据称为元素。

定义格式

类型 数组名[元素个数] 例如: int ages[5] = {19,34,32,20,13}; ->其中 ages[0] = 19; ages[1] = 34;

注意: 1.只能在定义数组的同时进行初始化 2.如果想在定义数组的同时进行初始化,数组元素个数必须是常亮或不写

正确写法举例

1> int ages[5] = {10,11,12,32};2> int ages[ ] = {10,11,12};3> int ages['A'] = {10,11,12}; 4> int ages['A' - 10] = {10,11,12};5> int ages[5] = {[3]=10,[4]=11};

错误写法举例

1> int ages[5];   2> ages = {10,11,12};3> int count = 5;   int ages[count] = {10,11,12};

题1:计算数组长度

#include <stdio.h> int main() {  int ages[] = {10,11,12,78,56,89,78};  //数组   int count = sizeof(ages) / sizeof(int); // 元素个数=总字节数/每个元素所占的字节数   for (int i = 0; i< count; i++)   //遍历数组中的每一个元素  printf("ages[%d]=%d\n",i,ages[i]);   return 0; }

这里写图片描述

2.二维数组表达式
例如:有3个班,每班10个人 -> int ages[3][10]

3.字符串

定义:很多个字符组合在一起就是字符串

题:char a[] = “123” 和 char a[] = {‘1’,’2’,’3’}; 的区别 ?

分析:”123”其实是由’1’,’2’,’3’,’\0’组成 (其实每个字符串都有最后一个隐藏的’\0’ 字符,并且字符串输出”%s”,’\0’是不会输出的)
‘\0’的作用:\0在ASCII码中值为0 (也是字符串结束的标记)

4.strlen函数
作用:计算字符串长度

1>.计算的是字符数,并不是字数,1个汉子算作3个字符
2>.计算的字符不包括 \0
3>.从某个地址开始数字符的个数,直到遇到\0 为止
4>.strlen 函数声明在string.h文件中

题2:计算一个字符串的长度

          #include <stdio.h>          #include <string.h>           int main()           {             char name[] = "itcastabc";             int size = strlen(name);             printf ("%d\n",size);             return 0;           }

这里写图片描述

题3:编写一个函数 char_contains(char str[],char c),如果字符串str中包含字符c,则返回1,否则返回0

#include <stdio.h>int char_contains(char str[], char c);int main(){  int result = char_contains("itcast",'t');  printf ("%d\n",result);}int char_contains(char str[],char c){  //遍历整个字符串   for (int i = 0; i < strlen(str); i++)    {     //如果发现某个字符串等于参数c,直接退出函数,返回1       if (str[i] == c)           {          return 1;         }     }         // 说明str中不包含c,返回0          return 0;}

这里写图片描述

结论:返回1,说明字符串”itcast”中包含字符’t’

0 0
原创粉丝点击