簡體   English   中英

C中字符串和字符的加減法

[英]Adding and subtracting strings and characters in C

我看到一個問題,它在 C 中有這樣的代碼片段

#include <stdio.h>

int main() {
    char s[] = "MANIPAL2022";
    printf("%s", s+s[4]-s[3]);

    return 0;
}

返回:

2022

我無法理解這里正在做什么以及如何添加顯示這些值的字符。

此外,像WESTHAM2022一樣長度的字符串什么也沒有返回

我試圖理解這個模式和char s[] = "WESTHAM2022" printf("%s", s+s[5]-s[3]); 編譯器返回了一些垃圾值!)�U

而對於

char s[] = "WESTHAM2022";
    printf("%s", s+s[2]-s[3]);

它返回9WESTHAM2022

 s+s[4]-s[3]
="MANIPAL2022"+'P'-'I'
="MANIPAL2022"+80-73
="MANIPAL2022"+7
="2022"

最后一步是指針的工作原理。

使用s = "WESTHAM2022"s+s[5]-s[3] = s-19 ,指向一個未定義的區域,因此它可以返回任何東西或崩潰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM