首页 > 其他分享 >c语言基本概念和数据类型常见问题

c语言基本概念和数据类型常见问题

时间:2024-06-02 18:59:58浏览次数:24  
标签:语句 常见问题 符号 代码 数据类型 char 类型 sizeof 基本概念

1. 两种特殊的转义字符:\ddd 和 \xdd是什么?

• \ddd :ddd表⽰1~3个⼋进制的数字。如: \130表⽰字符X

• \xdd :dd表⽰2个⼗六进制数字。如:\x30表⽰字符0

2. 指出里面哪些是转义字符,并给出运行结果

printf("%zd\n", strlen("c:\\test\128\abcd.c"));

转义字符有:  \\  ,  \12  ,  \a

\xxx表示八进制  \128里的因为8超过八进制0—7表示范围 所以只对\12转义

运行结果是:15

3. C语言是结构化语言,他有哪几种结构?控制语句是什么?

总体分位三种结构:
  1. 顺序结构
    • 程序按照代码的书写顺序从上到下执行。
  2. 选择结构
    • 根据条件的不同,选择执行不同的代码块。
    • 主要通过ifelse ifelseswitch等语句实现。
  3. 循环结构
    • 重复执行某段代码,直到满足特定的条件。
    • 包括forwhiledo-while等循环结构。

控制语句

  1. 条件(选择)语句
    • if 语句:如果满足某个条件,则执行相应的代码块。
    • if-else 语句:如果满足某个条件,则执行一个代码块;否则,执行另一个代码块。
    • else if 语句:用于在if-else结构中添加更多的条件判断。
    • switch 语句:根据表达式的值选择执行多个代码块中的一个。
  2. 循环语句
    • for 循环:用于在给定次数内重复执行代码块。
    • while 循环:当满足某个条件时,重复执行代码块。
    • do-while 循环:先执行一次代码块,然后检查条件;如果条件为真,则继续循环。
  3. 跳转语句
    • break 语句:用于立即退出最内层的循环或switch语句。
    • continue 语句:用于跳过当前循环的剩余部分,直接进入下一次循环。
    • goto 语句(不推荐使用):无条件跳转到程序中的指定位置。由于它可能导致代码难以理解和维护,因此在现代编程中很少使用。
  4. 其他语句
    • return 语句:用于从函数中返回一个值,并结束函数的执行。
    • exit() 函数(在stdlib.h中定义):用于立即终止整个程序的执行。

这些结构和控制语句共同构成了C语言程序的基本框架,使得程序员能够编写出结构清晰、易于理解和维护的代码。

4. 为什么要写注释? 编译器是如何看待注释掉的代码的呢?VS2022如何批量注释代码呢?

        注释可以帮助其他开发者(包括未来的你自己)理解代码的意图。 清晰的注释能够解释代码的目的、算法、数据结构等,使代码更易于阅读和理解。

编译器在处理代码时,对注释的态度是完全忽略的。

1. /* */ 的形式第⼀种⽅法是将注释放在 /*...*/ 之间,内部可以分⾏。

2. // 的形式 第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。这种注释只能是单⾏,可以 放在⾏⾸,也可以放在⼀⾏语句的结尾。这是C99标准新增的语法。

注:详细写法可以看c语言常见概念(2)

5. C语言也有布尔类型?如何使用?

C语言本身并没有内建的布尔(Boolean)类型,但在C99标准中引入了一个头文件 <stdbool.h>该头文件中定义了宏 booltrue 和 false,它们分别对应于整数类型 _Bool,以及整数值 1 和 0

要使用布尔类型,你需要包含 <stdbool.h> 头文件,并可以使用 bool 类型来声明布尔变量,用 true 和 false 作为布尔值。

6. sizeof不是函数? sizeof还有返回值?? sizeof是在编译器工作的哪个时期运算的?

        sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字 节。 sizeof 操作符的操作数可以是类型,也可是变量或者表达式。

   sizeof 的返回值是一个 size_t 类型的值,这是一个无符号整数类型,用于表示对象的大小。在大多数现代系统上,size_t 通常是 unsigned long 或 unsigned long long 的别名。

  sizeof是在编译时期运算的 不是在运行时期  在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在 程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。

7 .下面这段代码为什么不输出3 ?为什么?
 int a = 2;
 sizeof(++a);
 printf("%d", a); 

sizeof 是在编译时期(compile time)进行运算的,而不是在运行时期(runtime)。这意味着编译器在编译程序时就能确定 sizeof 表达式的值,并将其嵌入到生成的代码中。这是因为 sizeof 的操作数必须是一个完整的类型或对象,这些在编译时期都是已知的。因此,sizeof 的结果是一个常量表达式,其值在编译时期就被确定了。

8. 了解一下头文件 limits.h 和 float.h 

C 标准库 – <limits.h> | 菜鸟教程 (runoob.com)limits.h:https://www.runoob.com/cprogramming/c-standard-library-limits-h.html

float.h:https://www.runoob.com/cprogramming/c-standard-library-float-h.html

9. C语言的数据类型有哪四种? char类型是有符号还是无符号?

不同的数据类型都有不同取值范围

  1. 整型(Integer Types)

    • char:字符型,通常用于存储字符,但它实际上是一个整数类型。其大小依赖于系统和编译器(通常为1个字节),可以是有符号的或无符号的。
    • short:短整型,通常用于存储较小的整数。
    • int:整型,用于存储整数。
    • long:长整型,用于存储更大的整数。
    • long long(或 __int64 在某些编译器中):更长的整型,用于存储非常大的整数。

    每种整型都可以是有符号的(能表示正数和负数)或无符号的(只能表示非负整数)。默认情况下,charshortint 和 long 都是有符号的,但可以通过在类型前添加 unsigned 关键字来声明为无符号的。

  2. 浮点型(Floating-Point Types)

    • float:单精度浮点型。
    • double:双精度浮点型。
    • long double:长双精度浮点型(可能比 double 精度更高,但这不是必需的)。
  3. 空类型(Void Type)

    • void:表示没有值或没有类型的类型。它通常用于函数返回类型、指针类型和泛型编程中。
  4. 其他类型

    • _Bool 或 bool(在包含 <stdbool.h> 后):布尔类型,可以取 true 或 false
    • 枚举类型(Enumerations):用户定义的类型,可以包含一组命名的整数值。
    • 指针类型(Pointers):用于存储内存地址的类型。

关于 char 类型的符号性,这取决于编译器和具体的实现。默认情况下,char 可以是有符号的也可以是无符号的,这取决于编译器和平台。为了明确指定 char 的符号性,你可以使用 signed char 或 unsigned char。在某些平台上,char 默认是有符号的,而在其他平台上则默认是无符号的。因此,在编写可移植代码时,最好明确指定 char 的符号性。

10. 变量创建的局部有限性原则究竟是什么?

变量创建的局部有限性原则是指局部变量只在其所在的函数内部(作用域内)可见和使用,并且在函数执行结束后,这些局部变量的内存会被自动释放,不再存在(生命周期结束)。同时,局部变量在使用前必须被初始化。

• 全局变量:在⼤括号外部定义的变量就是全局变量 全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。

• 局部变量:在⼤括号内部定义的变量就是局部变量 局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

11. 局部变量和全局变量分别存在内存中的哪个位置?堆内如何存储变量?

1. 局部变量是放在内存的栈区                                        

2. 全局变量是放在内存的静态区

3. 堆区是⽤来动态内存管理的

···堆内存用于动态存储变量,通过malloccalloc等函数分配内存,并返回指向该内存的指针。程序员需手动管理堆内存,包括分配和释放。如果忘记释放内存,可能导致内存泄漏。使用这些函数时,应检查返回值以确保内存分配成功。

标签:语句,常见问题,符号,代码,数据类型,char,类型,sizeof,基本概念
From: https://blog.csdn.net/jiang2024_5_22/article/details/139388711

相关文章

  • 【人工智能】第一部分:ChatGPT的基本概念和技术背景
    人不走空                                          ......
  • MySql 数据类型选择与优化
    选择优化的数据类型更小的通常更好一般情况下尽量使用可以正确存储数据的最小类型。更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期也更少。但也要确保没有低估需要存储值的范围。简单就好简单的数据类型通常需要更少的CPU周期。......
  • 第2章 变量和简单数据类型
            在本章中,你将学习可在Python程序中使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量。2.1运行hello_world.py时发生的情况        运行hello_world.py时,Python都做了些什么呢?下面来深入研究一下。实际上,即便是运行简单......
  • Seafile常见问题记录
    Seafile重装后客户端同步资料库提示资料库冲突,实际资料库没有和已有资料库冲突将之前保存的账号删除,然后登录新的账号重新尝试同步网页端上传大批量文件有些上传没成功,或者提示超过1000个文件用客户端就可以解决,原因是网络浏览器界面并非设计用于处理大量文件,而是用于一次......
  • Tomcat安装与配置【详细!包含常见问题及其解决方案】
    Tomcat是什么?Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web应用服务器。Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。当在一台机器上配置好Apache服务器,可利用它响应HTML(标......
  • LeetCode-2886. 改变数据类型
    2886.改变数据类型DataFramestudents+-------------+--------+|ColumnName|Type|+-------------+--------+|student_id|int||name|object||age|int||grade|float|+-------------+--------+编写一个解决方案来纠正以下错误......
  • 大数据常见问题
    学习大数据很容易遇到一些重复的问题,尤其是环境等导致的问题,写一篇总结的博文很有必要。 HDFS上传文件时出错报错信息:ERROR:Cannotexecute/home/snow/hadoop/hadoop-3.1.3/libexec/hadoop-config.sh.解决方案:unsetHADOOP_HOME解释:/home/snow/hadoop并不是真的文件路径,可......
  • 32.MySQL数据库【二】存储引擎与基本数据类型.
    【一】MySQL之存储引擎1)介绍针对不同的数据有不同的处理机制,存储引擎就是不同的处理机制2)MySQL主要的存储引擎1.innodb是MySQL5.5版本之后的默认存储引擎支持事务、外锁、外键2.myisam是MySQL5.5版本之前的默认存储引擎速度比innodb快,但数据安全性较弱3.memory......
  • 一文看懂企业HPC环境下数据传输常见问题及解决方案
    HPC通常指的是“高性能计算”(High-PerformanceComputing)。高性能计算是计算机科学的一个分支,专注于构建和使用能够执行计算密集型任务(如模拟、数据分析、可视化等)的计算机系统。这些系统通常包括多个处理器(CPU)、图形处理器(GPU)、专用加速器或其他类型的计算单元,它们通过网络连接......
  • Vscode界面美化常见问题
    前排提醒本次教程大致如下美化插件美化后提示的错误解决方案美化插件background-cover点击底部图片选择图片设置背景即可保存后会提示损坏报错安装插件:Fix VSCode Checksums输入快捷键Ctrl+Shift+P输入Apply选FixChecksums:Apply,再重启即可最终结果......