C语言if后面的括号里的表达式是不是一定产生逻辑值?

c语言中非0的都为真

括号里的表达式 括号表示法括号里的表达式 括号表示法


括号里的表达式 括号表示法


表示判断条件成立

printf("putout:%dn",a+b>c&&b==c);

//

4==

5为

就是0

因为用的是&&必须两面都是真才为真

printf("putout:%dn",a||b+c&&b-c);

//(a

||

(b+c))

&&

(b-c)

,真

||

真&&

真=

真printf("putout:%dn",!(a>b)&&!c||1);

//(!(a>b)

&&

!c)

||

1,(

&&

)

||

真=

真printf("putout:%dn",!(x=a)&&(y=b)&&0);

//

!(x=a)

&&

(y=b)

&&

(

&&

真)

&&

=

printf("putout:%dn",!(a+b)+c-1&&b+c/2);

//

!(a+b)

+c

-1

&&

b+

c/

2,(

+c

-1)

&&

6=

程序中有没有带括号的表达式呢?

首先程序中有带括号的表达式,具体解释可以参照下面的总结。

:带圆括号的形式是包含在圆括号中的可选表达式列表

带圆括号的表达式列表将返回该表达式列表所产生的任何东西:如果该列表包含至少一个逗号,它会产生一个元组;否则,它会产生该表达式列表所对应的单一表达式。

一对内容为空的圆括号将产生一个空的元组对象。 由于元组是不可变对象,因此适用与字面值相同的规则(即两次出现的空元组产生的对象可能相同也可能不同)。

请注意元组并不是由圆括号构建,实际起作用的是逗号作符。 例外情况是空元组,这时圆括号 才是 必须的 --- 允许在表达式中使用不带圆括号的 "空" 会导致歧义,并会造成常见输入错误无法被捕获。

第二:对字面值求值将返回一个该值所对应类型的对象(字符串、字节串、整数、浮点数、复数)。 对于浮点数和虚数(复数)的情况,该值可能为近似值。

所有字面值都对应与不可变数据类型,因此对象标识的重要性不如其实际值。 多次对具有相同值的字面值求值(不论是发生在程序文本的相同位置还是不同位置)可能得到相同对象或是具有相同值的不同对象。

当名称被绑定到一个对象时,对该原子求值将返回相应对象。 当名称未被绑定时,尝试对其求值将引发 NameError 异常。

第三:私有名称转换: 当以文本形式出现在类定义中的一个标识符以两个或更多下划线开头并且不以两个或更多下划线结尾,它会被视为该类的 私有名称。 私有名称会在为其生成代码之前被转换为一种更长的形式。 转换时会插入类名,移除打头的下划线再在名称前增加一个下划线。 例如,出现在一个名为 Ham 的类中的标识符 __spam 会被转换为 _Ham__spam。 这种转换于标识符所使用的相关句法。 如果转换后的名称太长(超过 255 个字符),可能发生由具体实现定义的截断。 如果类名仅由下划线组成,则不会进行转换。

第四:对字面值求值将返回一个该值所对应类型的对象(字符串、字节串、整数、浮点数、复数)。 对于浮点数和虚数(复数)的情况,该值可能为近似值。

所有字面值都对应与不可变数据类型,因此对象标识的重要性不如其实际值。 多次对具有相同值的字面值求值(不论是发生在程序文本的相同位置还是不同位置)可能得到相同对象或是具有相同值的不同对象。

当名称被绑定到一个对象时,对该原子求值将返回相应对象。 当名称未被绑定时,尝试对其求值将引发 NameError 异常。

第五:私有名称转换: 当以文本形式出现在类定义中的一个标识符以两个或更多下划线开头并且不以两个或更多下划线结尾,它会被视为该类的 私有名称。 私有名称会在为其生成代码之前被转换为一种更长的形式。 转换时会插入类名,移除打头的下划线再在名称前增加一个下划线。 例如,出现在一个名为 Ham 的类中的标识符 __spam 会被转换为 _Ham__spam。 这种转换于标识符所使用的相关句法。 如果转换后的名称太长(超过 255 个字符),可能发生由具体实现定义的截断。 如果类名仅由下划线组成,则不会进行转换。

dowhile循环中根据情况可以省略while括号里的表达式?

在使用 do-while 循环时,我们可以根据情况省略 while 括号里的表达式。但是需要注意的是,如果省略了表达式,那么循环会变得没有终止条件,一旦进入了循环,就只能通过 break 语句或者抛出异常来跳出循环。

下面是一个省略了 while 表达式的 do-while 循环的例子:

```

int i = 0;

do

{Console.WriteLine(i);

i++;

}while (i < 5);

// 可以省略 while 表达式,此时循环相当于一个无限循环

do

{// do soming

} while (true);

```

在个例子中,我们正常地使用了 do-while 循环,并在 while 后面加上了终止条件 i < 5。因此,循环会在 i 大于等于 5 的时候结束。

而在第二个例子中,我们省略了 while 表达式,使得循环变成了一个无限循环。这种情况下,循环会一直执行,直到遇到 break 语句或者抛出异常才会跳出循环。

总而言之,虽然可以省略 while 表达式,但这并不是一个好的编程习惯,因为这会让代码更难以理解和维护。在实际编程中,我们应该尽量避免这种用法,并始终在 while 表达式中加入合适的终止条件。

for(……)循环语句的括号中有几个表达式 怎么看?

for 循环的一般形式为:

for(表达式1; 表达式2; 表达式3){

语句块

}它的运行过程为:

1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为,就结束循环。

上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。

“表达式1”仅在次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减作的表达式,以使循环条件逐渐变得“不成立”。

C语言中请问函数名中的括号里可以写表达式吗

C语言中请问函数名中的括号里可以写表达式吗 调用函数时,参数部分,可以使用表达式

定义函数时,不可以写表达式

c语言中可否用中文写函数名

不可以,为什么要用中文呢?

C语言中的算数表达式

是2.500000。那个int(x+y)强制类型转换成整型,结果是7;前面a%3求余为1,即17%2/4;7与2求余是1,与4整除为0;则是x的值。 程序如下

#include

int main()

{float x=2.5;

i nt a=7;

float sum;

float y=4.7;

sum = x+a%3(int)(x+y)%2/4;

printf("%f

", sum);

return 0;

}怎么理解C语言中函数:switch(表达式)case break;

就是一个判断语句 switch(A) 判断A case 1:...; 如果A等于1 则做一些作,然后break跳出,不进行判断 ,如果没有break;他会继续判断是否等于2的; break; case 2:...; .. default: ...; 这里 如果不等于1也不等于2,就执行default里面的语句;跳出循环

麻烦采纳,谢谢!

关于c语言中的数学表达式

简单的话可以使用pow(a,1.0/n),需加头文件 #include

a为被开方数,n为开方数

注意是1.0,不是1

1/n不等于1.0/n的(n是整型数据)

当然也可以自己写个函数,计算一下

函数调用是表达式的一种吗在c语言中

c语言中,函数调用是函数调用,表达式是表达式。两个概念。

在某些语言中(如:lisp),函数调用就是表达式。C语言不是这样的。

c语言,return(),括号里可以是表达式,数值,函数地址还有什么呢? 或者说 括号里不能是什么呢?

说点夸张的,你想让它返回什么,它就能返回什么,当然,你想让它,把你返回了,它是不能哈~~~

c 中,return 可以返回,任何是值(value)的东西,

return 1; return 1 + 2; return "abc";

实际上,return 也可以什么都不返回,

return ; 表示,函数到此结束,控制权已经交给了调用它的人了,后面的代码,无视~~

因为吧,c 中有指针类型一说,而指针是无所不指的,可以指向char, int , double ,

可以指向指针,可以指向数组int[12],可以指向函数, 指向结构体,等等、

而指针本来就是一种类型,一个值(value),所以说,只要你懂,return 什么东西都能返回,

补充一句,他不能返回,非值的东西(value),比如

return +; 这什么东东??返回运算符?、god、、你会这样吗?、

C语言中的函数名字该怎么读?

一般取名都是单词省略后得到函数名,也有的人用拼音命名,怎么读并不重要,关键是明白函数是干什么的.你可以参考一下匈牙利命名法

在C语言中有那些函数名?

仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧.对象反射库、调试工具及代码分析器,经常会需要在运行时访问函数的名称,直到不久前,能完成此项任务并且可移植的方法,是手工在函数体内嵌入一个带有该函数名的硬编码字符串,不必说,这种方法非常单调无奇,并且容易导致错误。本文将要演示怎样使用新的C99特性,在运行时获取函数名。

那么怎样以编程的方式从当前运行的函数中得到函数名呢?

是:使用__FUNCTION__ 及相关宏。

引出问题

通常,在调试中让人心烦的阶段,是不断地检查是否已调用了特定的函数。对此问题的解决方法,一般是添加一个cout或printf()——如果你使用C语言,如下所示:

void myfunc()

{cout<<"myfunc()"<

其他代码

}通常在一个典型的工程中,会包含有数千个函数,要在每个函数中都加入一条这样的输出语句,无疑难过上“蜀山”啊,因此,需要有一种机制,可以自动地完成这项作。

获取函数名

作为一个C++程序员,可能经常遇到 __TIME__、__FILE__、__DATE__ 这样的宏,它们会在编译时,分别转换为包含编译时间、处理的转换单元名称及当前时间的字符串。

在的ISO C标准中,如大家所知的C99,加入了另一个有用的、类似宏的表达式__func__,其会报告未修饰过的(也就是未裁剪过的)、正在被访问的函数名。请注意,__func__不是一个宏,因为预处理器对此函数一无所知;相反,它是作为一个隐式声明的常量字符数组实现的:

static const char __func__[] = "function-name";

在function-name处,为实际的函数名。为激活此特性,某些编译器需要使用特定的编译标志,请查看相应的编译器文档,以获取具体的资料。

有了它,我们可免去大多数通过手工修改,来显示函数名的苦事,以上的例子可如下所示进行重写:

void myfunc()

{cout<<"__FUNCTION__"<

}C99标准为此目的定义的__func__标识符,确实值得大家关注,然而,ISO C++却不完全支持所有的C99扩展,因此,大多数的编译器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一个定义为 __func__ 的宏,之所以使用这个名字,是因为它已受到了大多数的广泛支持。

在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替。

Comeau的用户也应使用 __FUNCTION__ ,而不是 __func__ 。

C++ BuilderX的用户则应使用稍稍不同的名字:__FUNC__ 。

GCC 3.0及更高的版本同时支持 __func__ 和__FUNCTION__ 。

一旦可自动获取当前函数名,你可以定义一个如下所示显示任何函数名的函数:

void show_name(const char name)

{cout<

}void myfunc()

{show_name(__FUNCTION__); 输出:myfunc

}void foo()

{show_name(__FUNCTION__); 输出:foo

}因为 __FUNCTION__ 会在函数大括号开始之后就立即初始化,所以,foo()及myfunc()函数可在参数列表中安全地使用它,而不用担心重载。

签名与修饰名

__FUNCTION__ 特性初是为C语言设计的,然而,C++程序员也会经常需要有关他们函数的额外信息,在Visual Studio 2005中,还支持另外两种非标准的扩展特性:__FUNCDNAME__ 与 __FUNCSIG__ ,其分别转译为一个函数的修饰名与签名。函数的修饰名非常有用,例如,在你想要检查两个编译器是否共享同样的ABI时,就可派得上用场,另外,它还能帮助你那些含义模糊的链接错误,甚至还可用它从一个DLL中调用另一个用C++链接的函数。在下例中,show_name()报告了函数的修饰名:

void myfunc()

{show_name(__FUNCDNAME__); 输出:?myfunc@@YAXXZ

}一个函数的签名由函数名、参数列表、返回类型、内含的命名空间组成。如果它是一个成员函数,它的类名和const/volatile限定符也将是签名的一部分。以下的代码演示了一个的函数与一个const成员函数签名间的不同之处,两个函数的名称、返回类型、参数完全相同:

void myfunc()

{show_name(__FUNCSIG__); void __cdecl myfunc(void)

}struct S

{void myfunc() const

{show_name(__FUNCSIG__); void __thiscall S::myfunc(void) const

}};

C语言中!x的等价表达式

x==0

C语言中请问函数名中的括号里可以写表达式吗

这是逗号表达式,没有括号表达式。。

((b=(2,3),b+2),15+b)

从左往右一次执行语句,以逗号作为分界,返回一个语句的值

所以

b=3

返回15+b

=18

b=18

b=b+b

=36

b+=b-=((b=(2,3),b+2),15+b)

赋值且运算是右结合

b=3

b-=18

b=-15

b+=b

b=-30