首页 > 其他分享 >操作符复习 看看你学会了吗?复习必备

操作符复习 看看你学会了吗?复习必备

时间:2024-09-02 10:50:18浏览次数:12  
标签:arr ch 复习 int 必备 操作符 printf sizeof

sizeof的应用

判断输出值:

#include<stdio.h>
void test(int arr[])
{
    printf("%d\n", sizeof arr);
}
void try(char ch[])
{
    printf("%d",sizeof ch);
}
    int main()
   {
        int arr[10] = { 0 };
        char ch[10] = { 0 };
        //sizeof是单目操作符,可以不加()而使用,判断类型所占字节大小就不行
        printf("%d\n", sizeof arr);
        printf("%d\n", sizeof ch);
        test(arr);
        try(ch);
    return 0;
   }
  1. sizeof 操作符:在 main 函数中,sizeof arr 和 sizeof ch 会分别返回整个 arr 数组和 ch 数组的大小(以字节为单位)。由于 arr 是 int 类型的数组,每个 int 通常占用 4 字节(这取决于编译器和平台),所以 sizeof arr 会是 4 * 10 = 40。同理,ch 是 char 类型的数组,每个 char 占用 1 字节,所以 sizeof ch 会是 1 * 10 = 10

  2. test 函数:在这个函数中,arr 参数是一个指向 int 的指针(尽管在函数声明中它是数组形式,但在函数内部它退化为指针)。因此,sizeof arr 在这里实际上是返回指针的大小,而不是数组的大小。在大多数现代系统上,指针的大小是 4 字节(32位系统)或 8 字节(64位系统)。

输出结果 40 10 8 8

比较字符串是否相同

使用函数:

#include <string.h> 
if (strcmp(str1, str3) == 0) 

来判断是否相等

逻辑操作符

易错点:

i=a++||++b||c++;
//b的值是否+1了?
  1. 操作符优先级:逻辑或(||)操作符的优先级低于前缀递增(++x)和后缀递增(x++),但在这个表达式中,由于递增操作符直接作用于变量,而逻辑或操作符用于比较这些递增操作的结果,所以递增操作会首先发生(尽管对于后缀递增来说,递增的“可见性”会延迟).

  2. 逻辑或的短路行为:逻辑或操作符(||)具有短路行为,即如果第一个操作数(在这里是a++的结果)为真(非零),则不会计算第二个和第三个操作数(++bc++)。这是因为逻辑或只需要一个真值就可以确定整个表达式的真值。同理&&也是这样的。

    b的值没有+1

表达式求值里的转换

  • 小的整数类型(如charshort)在大多数表达式中会被提升为int类型。如果int类型不能表示原类型的所有值,则会被提升为unsigned int
    char c = 1;  
    printf("%u\n", sizeof(c)); // 1  
    printf("%u\n", sizeof(+c)); // 4 
    printf("%u\n", sizeof(-c)); // 4 

正负号会发生整形提升

标签:arr,ch,复习,int,必备,操作符,printf,sizeof
From: https://blog.csdn.net/2301_80983176/article/details/141781477

相关文章

  • 最新DY评论区采集获客助手,一键导出精准获客必备神器
    工具概述社交媒体视频内容分析工具是一款旨在帮助用户从社交媒体平台(如斗音)高效采集和分析视频评论的软件。该工具通过关键词筛选功能,使用户能够快速定位和分析特定主题或品牌相关的用户反馈和市场趋势。核心功能关键词筛选:用户可以设定特定关键词,工具将自动筛选出包含......
  • 常微分方程复习——连续动力系统极限环备忘
    文章目录......
  • 高效达人必备!Simple Sticky Notes让灵感与任务不再遗漏!
    前言阿尔伯特·爱因斯坦所言:“我们不能用制造问题时的同一水平思维来解决它。”这句话深刻地揭示了创新与突破的必要性。正是基于这样的理念,SimpleStickyNotes这款桌面便签软件以其独特的创新视角和实用性,在众多同类软件中脱颖而出。它源自于开发团队对于高效工作与便捷生......
  • Java并发编程面试必备:如何创建线程池、线程池拒绝策略
    一、线程池1.线程池使用1.1如何配置线程池大小如何配置线程池大小要看业务系统执行的任务更多的是计算密集型任务,还是I/O密集型任务。大家可以从这两个方面来回答面试官。(1)如果是计算密集型任务,通常情况下,CPU个数为N,设置N+1个线程数量能够实现最优的资源利用率。因为N......
  • 探索Java的String魔法:揭秘“+”操作符的实现
    探索Java的String魔法:揭秘“+”操作符的实现在Java的世界里,String是一个无处不在的数据类型,它用于存储和操作文本数据。String的“+”操作符是连接字符串的常用方式,但你是否曾想过,这个看似简单的操作符背后隐藏着怎样的魔法?本文将深入探讨Java中String的“+”操作符是如何......
  • Dify大语言模型应用开发平台新手必备:安装注册与私有服务器部署全步骤
    Dify简介Dify是一个开源的大语言模型(LargeLanguageModel,LLM)应用开发平台。它融合了后端即服务(BackendasaService,BaaS)和LLMOps的理念,旨在帮助开发者,甚至是非技术人员,能够快速搭建和部署生成式AI应用程序。Dify的主要特点包括:简化开发流程:通过提供一系列工具和服务来简......
  • 机组复习
    1.数字计算机如何分类?分类的依据是什么?①按存储量大小分类:分为巨型、大型、中型、小型机和微型机。②从传输方式和操作方式分类:分为串行机和并行机。③按电路组成分类:分为电子管、晶体管、集成电路、大规模集成电路。④按用途分类:分为通用计算机、数据处理机和控制机。数字计算机......
  • 计算机网络复习
    复习时以课件为主,全覆盖。填空题示例如下:1.软件定义网络SDN体系结构包括(控制层面)、(数据层面)和(应用层)三个主要部分。2.TCP采用了超时重传定时器、(持续计时器)、(保活计时器)和(时间等待计时器)四个定时器。超时重传计时器(RetransmissionTimer)持续计时器(PersistentTimer)保活计时......
  • Vue期末考试速成复习指南附编程题(js开发基础+路由+Pinia)
    前文:本文参考书籍《Vue.js前端开发实战(第二版)》--黑马程序员/编著重点在于本科期末速成和0基础入门目录:一.初识Vue1.包管理工具:npmyarn2.创建Vue项目二.js开发基础1.什么是单文件组件?2.单文件组件基本结构3.切换页面显示组件3.数据绑定与输出4.Vue引入Html页面5.......
  • 《NET CLR via C#》---第八章(类的实例构造器,结构的实例构造器,类型构造器,操作符重载方
    类的实例构造器构造器是将类型的实例初始化为良好状态的特殊方法。构造器方法在“方法定义元数据表”中始终叫做.ctor(constructor的简称)。创建引用类型的实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步块索引),最后调用类型的实例构造器来设置对象......