重新认识了很多的标识符,其实之前大多的代码里都有所体现,有少数没有用过的,我着重的进行了记忆,并且实现了一些例题;

左移右移标识符

#include <stdio.h>int main(){    int num = 0;    //找出num中的二进制位中的1的个数    scanf("%d", &num);    int i = 0;    int count = 0;    for (i = 0; i < 32; i++)    {        if (1 == ((num >> i) & 1))            count++;    }    printf("%d", count);    return 0;   }

以上表现了右移标识符的一种用法,右移标识符只是将数字对应的二进制位进行右移,左移标识符择优算数左移和逻辑左移,编译器中的是算术左移,会保留符号位,数据存储的时候都是存为补码的形式,正数原码等于补码,负数的补码等于原码按位取反再加一。

结构体构建的标识符

struct Stu{    char name[20];    int age;    char id[20];};#include <stdio.h>int main(){    struct Stu s1 = { "张三",20,"2020012111" };    printf("%s\n", s1.name);    printf("%d\n", s1.age);    printf("%s\n", s1.id);    struct Stu* ps = &s1;    printf("%s\n", (*ps).name);    printf("%s\n", ps->name);    //->  结构体指针指向操作符    return 0;}

其中的指向地址的操作符明显比直接用名称打印方便多了。

标识符的错误用法

#include <stdio.h>int main(){    char a = 127;    char b = 3;    char c = a + b;    printf("%d\n", c);    int x = 1;    printf("%d\n", x + --x);//无意义的算式    return 0;}

在不同的编译器中会有不同的结果

#include <stdio.h>int main(){    int i = 1;    int a = (++i) + (++i) + (++i);    printf("%d  %d\n", a, i);    return 0;}

要通过操作符确定唯一的计算路径,那么这个表达式才是正确的。所以上面的代码时错误的,在 Linux系统中的执行结果为10

©著作权归作者所有:来自51CTO博客作者赤晴的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. php实现生成不重复的唯一标识符
  2. (T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARI
  3. 如何在mysql中配置区分大小写的数据库标识符
  4. Python2基础用法(中文编码,标识符,注释)
  5. 如何在sql server中生成并手动插入一个惟一标识符?
  6. Java从零开始学二(标识符和关键字)

随机推荐

  1. 找不到go-pear。bat文件PHP 5.5 Windows
  2. 检索InnoDB组合密钥表的最后插入ID
  3. php 实现下载的方法
  4. 大文件从指定行开始读取
  5. 如何通过热门/上升的帖子订购
  6. mysql_query会自动执行,但不会在onClick时
  7. php写app接口并返回json数据
  8. PHP环境搭建和编写API接口
  9. ajax php bomt头 utf-8带来的奇怪问题。
  10. MySQL错误1046:未选择数据库