mysql 是空字符或null 设置为0_NULL,0,#x27;\0#x27;,“0”,quot;\0quot;你真的分得清吗?

news/2024/7/8 4:34:04


原文地址:NULL,0,'0'的区别

前言

在C语言中,我们有时候看到NULL,有时候也看到'0',那它们之间有什么区别呢?

本质

本质来说,NULL,0,'0'都是一样的,都是值0。是的,你没有听错。说到这本文差不多应该结束了。不过为了不被打,还是继续说一说。它们虽然值都是0,但是含义却是不一样的。

NULL

虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。

//来源:公众号【编程珠玑】 博客:https://www.yanbinghu.com
//null.c
#include<stdio.h>
int main(void)
{
    int a = NULL;
    printf("%pn",a);
    return 0;
}

我们编译它:

$ gcc -o null null.c
null.c: In function ‘main’:
null.c:14:10: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
  int a = NULL;
          ^

它给了我们一个警告,提示尝试将指针转换为整数。这也就正验证了我们前面的说法。

实际上NULL通常是如下定义:

#define NULL (void*)0

所以,如果要给一个指针类型初始化,那么你给它一个NULL,使得能够明显的看到这是一个指正。

当然,在C++中,你更应该使用nullptr,而不是NULL。

'0'

我们都知道是转义符,用单引号包起来,再加转义,实际上就是0,只不过它表示的是字符。就向下面这样:

//来源:公众号【编程珠玑】 博客:https://www.yanbinghu.com
//nul.c
#include<stdio.h>
int main(void)
{
    char a = '0';
    char b = '0';
    printf("a = %d,b = %dn",a,b);
    return 0;
}

编译运行:

$ gcc -o nul nul.c
./nul
a = 0,b = 48

我们最常见到的就是它作为字符串的结束符。所以我们常常会看到下面这样的写法:

char str[16];
/*do something*/
str[15] = '0';

还记得printf是如何打印字符串,以及strcmp比较停止规则吗?是的,它们都以遇到'0'结束。

注意,它和'0'完全不一样。通过打印就可以看到了,实际上'0'的值就是0。

需要特别注意的是,如果'0'的0后面跟八进制的数,则会被转义。所以'60'与'0'的值一致。

0

这个不用多解释。

int a = 0;

"0"

用双引号包裹的0是字符串,我们看不到的是它结尾还有一个’0‘

#include<stdio.h>
int main(void)
{
    char str[] = "0";
    printf("sizeof str is %d,string len is %dn",sizeof(str),strlen(str));
    return 0;
}

运行结果:

sizeof str is 2,string len is 1

"0"

这也是字符串,只不过是两个空字符。使用strlen计算字符串长度为0。

" "

字符串。字符串长度为1,占用空间2字节,是一个空格加空字符。

总结

到这里你应该明白了,它们的值可能一样,但赋予的含义却不一样,为了代码良好的可读性,你应该在恰当的时候使用合适的值。

认真理一理C++的构造函数


http://www.niftyadmin.cn/n/2569898.html

相关文章

重启centOS丢失nginx.pid导致无法启动nginx的解决方法

目录 找到nginx找到nginx的配置文件拼接命令&#xff0c;启动nginxNginx指令拓展知识&#xff08;中英对照&#xff09;&#xff1a;tags: centOSlinuxnginx categories:服务器找到nginx 首先&#xff0c;如果你忘记了你的nginx的安装目录&#xff0c;不妨使用以下命令&#xf…

SpringBoot之集成通用Mapper

第一种&#xff1a; 1.引入POM坐标&#xff0c;需要同时引入通用mapper和jpa <dependency><groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <!-- 建议使用最新版本,最新版本请从项目首页查找 --> <version>3.4.0…

轻快PDF阅读器怎么阅读电子书

当我们从网上下载资料时&#xff0c;一般碰见的都是PDF格式。想要阅读PDF文件时时,我们一般都会使用PDF阅读器。但是网络上给推出的阅读器有很多&#xff0c;这让人很难去选择&#xff0c;不过大家放心&#xff0c;今天小编就给大家介绍一个非常好用&#xff0c;而且还省时省力…

怎么配置在谷歌和ie内核时使用不同的_IE浏览器要彻底凉了?曾占95%市场份额,拥有25年历史,如今微软却宣布…...

每经编辑&#xff1a;卢祥勇互联网的“活化石”正陆续退场。微软日前宣布&#xff0c;从2021年8月17日开始&#xff0c;微软365办公软件应用和服务将全面停止对IE11浏览器的支持&#xff0c;这意味着在这之后&#xff0c;用户将无法在IE11浏览器上使用微软365办公软件。微软表示…

python 读取鼠标选中文本_Python制作消消乐小游戏

作者&#xff1a;Charles个人微信公众号&#xff1a;Charles的皮卡丘&#xff08;欢迎大家搜索关注&#xff09;游戏规则玩家通过鼠标交换相邻的拼图&#xff0c;若交换后水平/竖直方向存在连续三个相同的拼图&#xff0c;则这些拼图消失&#xff0c;玩家得分&#xff0c;同时生…

088实战 项目技术框架

三层框架 数据收集 数据处理 数据可视化

win10安全模式都进不去_win7每次启动都出现系统恢复选项而且点那个都没用

电脑进入系统恢复界面&#xff0c;说明系统引导损坏&#xff0c;文件丢失等&#xff0c;重启按F8进入安全模式&#xff0c;或最后一次正确配置 清理修复系统或者重启按del键进入BIOS设置&#xff0c;看硬盘是否正常或者使用U盘启动工具&#xff0c;进入pe系统&#xff0c;重新按…

用python在linux下获取网卡地址

使用一个第三方库&#xff0c;名为psutil 代码如下&#xff1a; #!/usr/bin/python # -*- coding:utf-8 -*-import psutildef get_netcard():netcard_info []info psutil.net_if_addrs()for k,v in info.items():# print "k is {0} and v is {1}".format(k,v)for i…