C 如果(!msize)是什么意思?

C 如果(!msize)是什么意思?,c,C,我正在试图弄清楚以下代码的含义 在这里if(!msize)检查msize是否为零或msize是否为NULL if (!msize) msize = 1 / msize; /* provoke a signal */ //Example 1: A division-by-zero misuse, in lib/mpi/mpi-pow.c of the Linux kernel, where the entire code will be optimized away. //Compil

我正在试图弄清楚以下代码的含义

在这里
if(!msize)
检查
msize
是否为零或
msize
是否为
NULL

if (!msize)
    msize = 1 / msize; /* provoke a signal */

//Example 1: A division-by-zero misuse, in lib/mpi/mpi-pow.c of the Linux kernel, where the entire code will be optimized away. 
//Compilers, GCC 4.7 and Clang 3.1
它检查
msize
是否为0,这相当于在(msize==0)时写入
。如果是,它会故意执行除零运算。

它的意思是“如果msize等于0”。请记住,在本例中,NOT是一个逻辑运算符。NULL也是C中的标准宏

但是,如果msize是布尔值,则“
if(!msize)
”等同于“
if(msize==false)

旁注:-

5.6乘法运算符

4) 二进制/运算符产生商,二进制% 运算符从第一个除法得到余数 第二个表达如果/或%的第二个操作数为零 行为未定义;否则(a/b)*b+a%b等于a。如果两者都有 操作数为非负,则余数为非负;如果没有,, 余数的符号为执行定义79)。(重点 矿山)


另外,您可能会得到1的结果。#IND000基本上是NaN的表示,基本上IND是Windows系统中NaN的表示(不是数字)。IND代表“不确定形式”,主要由非法操作(如除以零)导致。

if(!msize)与if(msize)正好相反。 在这里
如果(!msize)如果msize==0或NULL,则此表达式变为true…

msize是肢体的数量。一个数字,不是指针。你不能被指针除。。。
if (msize == 0)
    msize = 1 / msize; /* provoke a signal */