{"id":16695,"date":"2022-10-21T22:21:02","date_gmt":"2022-10-21T16:51:02","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/"},"modified":"2022-10-21T22:21:02","modified_gmt":"2022-10-21T16:51:02","slug":"solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/","title":{"rendered":"[Solved] Passing float to a function with int argument (that is not declared beforehand)"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-42549951\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"42549951\" data-parentid=\"42549605\" data-score=\"3\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>The C programming language is essentially a single-scan language &#8211; a compiler doesn&#8217;t need to reread the code but it can assemble it line by line, retaining information only on how identifiers were declared.<\/p>\n<p>The C89 standard had the concept of implicit declaration. In absence of a declaration, the function <code>p1<\/code> is declared implicitly as <code>int p1()<\/code>; i.e. a function that returns an <code>int<\/code> and takes unspecified arguments that go through default argument promotions. When you call such a function giving it a <code>float<\/code> as an argument, the float argument is promoted to a <code>double<\/code>, as called for by default argument promotions. It would be fine if the function was <code>int p1(double arg)<\/code>; but the expected argument type is <code>unsigned int<\/code>, and the return value is not compatible either (<code>void<\/code> vs <code>int<\/code>). This mismatch will cause the program to have <em>undefined behaviour<\/em> &#8211; there is no point in reasoning what is happening then. However, there are many old C programs that would fail to compile, if the compilers wouldn&#8217;t support the archaic implicit declarations &#8211; thus you just need to consider all these warnings as errors.<\/p>\n<p>Notice that if you change the <strong>return value<\/strong> of <code>p1<\/code> into an <strong><code>int<\/code><\/strong>, you will get less warnings:<\/p>\n<pre><code>% gcc implicit.c\nimplicit.c:14:5: warning: implicit declaration of function \u2018p1\u2019 [-Wimplicit-function-declaration]\n p1(fvar);\n ^~\n<\/code><\/pre>\n<p>But the observed behaviour on my compiler would be mostly the same.<\/p>\n<p>Thus the presence of mere <strong>warning: implicit declaration of function \u2018x\u2019<\/strong> is quite likely a <strong>serious error<\/strong> in newly written code.<\/p>\n<p>Were the function declared before its use, as is case with <code>p2<\/code>, then the compiler knows that it expects an <code>unsigned long<\/code> as the argument, and returns <code>void<\/code>, and therefore it would know to generate correct conversion code from <code>float<\/code> to <code>unsigned long<\/code> for the argument.<\/p>\n<hr>\n<p>The C99 and C11 do not allow implicit function declarations in strictly-conforming programs &#8211; but they also do not require a conforming compiler to reject them either. C11 says:<\/p>\n<blockquote>\n<p>An identifier is a primary expression, provided it has been declared as designating an object (in which case it is an lvalue) or a function (in which case it is a function designator).<\/p>\n<\/blockquote>\n<p>and a footnote noting that<\/p>\n<blockquote>\n<p>Thus, an undeclared identifier is a violation of the syntax.<\/p>\n<\/blockquote>\n<p>However, it doesn&#8217;t require a compiler to reject them.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">3<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Passing float to a function with int argument (that is not declared beforehand) <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] The C programming language is essentially a single-scan language &#8211; a compiler doesn&#8217;t need to reread the code but it can assemble it line by line, retaining information only on how identifiers were declared. The C89 standard had the concept of implicit declaration. In absence of a declaration, the function p1 is declared implicitly &#8230; <a title=\"[Solved] Passing float to a function with int argument (that is not declared beforehand)\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\" aria-label=\"More on [Solved] Passing float to a function with int argument (that is not declared beforehand)\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-16695","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] The C programming language is essentially a single-scan language &#8211; a compiler doesn&#8217;t need to reread the code but it can assemble it line by line, retaining information only on how identifiers were declared. The C89 standard had the concept of implicit declaration. In absence of a declaration, the function p1 is declared implicitly ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-21T16:51:02+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Passing float to a function with int argument (that is not declared beforehand)\",\"datePublished\":\"2022-10-21T16:51:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\"},\"wordCount\":381,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\",\"name\":\"[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-21T16:51:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Passing float to a function with int argument (that is not declared beforehand)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb","og_description":"[ad_1] The C programming language is essentially a single-scan language &#8211; a compiler doesn&#8217;t need to reread the code but it can assemble it line by line, retaining information only on how identifiers were declared. The C89 standard had the concept of implicit declaration. In absence of a declaration, the function p1 is declared implicitly ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/","og_site_name":"JassWeb","article_published_time":"2022-10-21T16:51:02+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Passing float to a function with int argument (that is not declared beforehand)","datePublished":"2022-10-21T16:51:02+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/"},"wordCount":381,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/","url":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/","name":"[Solved] Passing float to a function with int argument (that is not declared beforehand) - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-21T16:51:02+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-passing-float-to-a-function-with-int-argument-that-is-not-declared-beforehand\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Passing float to a function with int argument (that is not declared beforehand)"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/16695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=16695"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/16695\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=16695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=16695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=16695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}