C语言——字符串,运算符和表达式之算术

字符串

字符串常量

字符串常量是用双引号括起来的字符序列,且不可修改。

字符串常量在内存中是连续存放字符的ASCII码值,末尾会加“\0".(\0也是一个字符)

现在区别就来了,字符串“a”和字符“a”是不一样的,字符串“a”末尾会加\0,共占两个字节,而字符“a”只占一个字节。

字符串函数

C语言中操作字符串的函数

,使用时需包含头文件<string.h>

可以来看几个例子:

strlen(s1)返回字符串的长度,且不包含\0
strcmp(s1,s2)

s1,s2相同,返回值为0

s1<s2,返回值小于0

s1>s2,返回值大于0

比如:

#include<stdio.h>
#include<string.h>
void main()
{
	printf("strlen=%d\n",strlen("friendship"));
	printf("strcmp=%d\n",strcmp("friend","friendship"));
	printf("strcmp=%d\n",strcmp("honey","dear"));
	printf("strlen=%d\n",strlen("happy birthday"));
}

那我们可以得到其结果为:

                

运算符和表达式

表达式:由操作数和运算符组成的序列,类似于算数中的四则运算,其中的操作数可以是常量也可以是变量。

算数运算符+  -  * / ++
关系运算符>  <  ==  >=  <=  !=
逻辑运算符!  &&
位运算符<<  >>
赋值运算符=及其扩展赋值运算符
条件运算符?:
逗号运算符
指针运算符*  &
求字节数运算符sizeof
强制类型转换(类型)
成员运算符,->
下标运算符【】
其他如:调用函数运算符()

如果对运算符所需要的操作数的个数来分类,那么运算符则可以分为:单目运算符,双目运算符,和三目运算符

单目运算符:对一个运算量进行运算,比如取负运算符

双目运算符:对两个运算量进行运算,比如算数运算符

三目运算符:C语言中,只有一个三目运算符,也就是条件运算符

C语言中存在优先级和结合性,即运算的先后顺序和优先级相同时运算的结合方向

在结合性中,除单目运算符,赋值运算符和条件运算符是右结合性外,其余都是左结合性

在优先级中,单目高于双目,双目高于三目,三目高于赋值,而在双目中,先后顺序为  算                          数,移位,关系,位逻辑,逻辑

表达式求值

  • 按运算符优先级进行
  • 优先级相同,则按C语言规定的结合方向进行

(当然,我们也可以通过人为的加括号来改变优先级,以此来避免出现错误的概率)

运算符和表达式之算术

算数表达式:指用算数运算符和括号将运算量连接起来的式子

%为求余运算符,即结果为一个数除以另一个数的余数,其结果也是整数

  • 两个实数相除,其结果为双精度实数
  • 两个整数相除,其结果为整数

可以来看几个例子,比如:1/2=0   1.0/2=0.5

(1)在类型不同的数中,结果往往按照优先级高的类型来定,从高到低为——

  •  double,float
  • double,unsigned,int,char,shot

(2)求余数运算

         比如:

#include<stdio.h>
void main()
{
	printf("%d\n",100%31);
	printf("%d\n",-100%31);
	printf("%d\n",100%-31);
	printf("%d\n",-100%-31);
}

运行结果为:

 其结果正负与求余运算符左边符号一致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于递归的算术表达式求值的C语言程序: ```c #include <stdio.h> #include <stdlib.h> #include <ctype.h> int index = 0; // 全局索引变量 char* expression; // 存储表达式字符串 int evaluateExpression(); int evaluateTerm(); int evaluateFactor(); int main() { expression = (char*)malloc(sizeof(char) * 100); // 为表达式字符串分配内存空间 printf("请输入一个包含加减乘除和括号的算术表达式:\n"); scanf("%s", expression); printf("表达式的结果是:%d\n", evaluateExpression()); // 调用 evaluateExpression() 函数求值 free(expression); // 释放内存空间 return 0; } // 函数 evaluateExpression() 对表达式进行求值 int evaluateExpression() { int value = evaluateTerm(); // 调用 evaluateTerm() 函数求出左操作数的值 while (expression[index] == '+' || expression[index] == '-') { // 遍历表达式中的运算符 char operator = expression[index++]; // 获取当前运算符 int term = evaluateTerm(); // 调用 evaluateTerm() 函数求出右操作数的值 if (operator == '+') { value += term; // 执行加法运算 } else { value -= term; // 执行减法运算 } } return value; } // 函数 evaluateTerm() 对表达式中的乘除运算进行求值 int evaluateTerm() { int value = evaluateFactor(); // 调用 evaluateFactor() 函数求出左操作数的值 while (expression[index] == '*' || expression[index] == '/') { // 遍历表达式中的运算符 char operator = expression[index++]; // 获取当前运算符 int factor = evaluateFactor(); // 调用 evaluateFactor() 函数求出右操作数的值 if (operator == '*') { value *= factor; // 执行乘法运算 } else { value /= factor; // 执行除法运算 } } return value; } // 函数 evaluateFactor() 对表达式中的因子进行求值 int evaluateFactor() { int value; if (expression[index] == '(') { // 如果当前字符是左括号,则调用 evaluateExpression() 函数求出括号内的表达式的值 index++; value = evaluateExpression(); index++; // 跳过右括号 } else { // 否则,当前字符为数字字符,将其转换成整数类型 value = 0; while (isdigit(expression[index])) { // 遍历数字字符 value = value * 10 + (expression[index] - '0'); // 将字符转换成数字 index++; } } return value; } ``` 这个程序使用了三个递归函数,分别是 `evaluateExpression()`、`evaluateTerm()` 和 `evaluateFactor()`,分别对表达式、乘除运算和因子进行求值。程序首先读入一个包含加减乘除和括号的算术表达式,然后调用 `evaluateExpression()` 函数对表达式进行求值,并返回结果。在 `evaluateExpression()` 函数中,程序首先调用 `evaluateTerm()` 函数求出左操作数的值,然后遍历表达式中的运算符,执行加法或减法运算。在 `evaluateTerm()` 函数中,程序首先调用 `evaluateFactor()` 函数求出左操作数的值,然后遍历表达式中的运算符,执行乘法或除法运算。在 `evaluateFactor()` 函数中,程序首先判断当前字符是左括号还是数字字符,如果是左括号,则调用 `evaluateExpression()` 函数求出括号内的表达式的值,否则将当前字符转换成整数类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值